use*_*359 2 php mysql utf-8 character-encoding apostrophe
我试图转换从MySQL数据库中取出的ISO8859-1字符串,并使用php将其转换为UTF-8.但是,当我使用utf8_encode函数时,它会从字符串中删除几乎所有的撇号(异常似乎在html字段中).
谢谢
您的"ISO-8859-1"内容可能实际上不是ISO-8859-1.
当你说Content-Type: text/html; charset=iso-8859-1,由于令人讨厌的历史原因,浏览器实际上并没有使用ISO-8859-1.他们真的使用Windows代码页1252(西欧),这与ISO-8859-1非常相似,但不一样.
特别是,0x80-0x9F范围内的字节表示ISO-8859-1中不可见且很少使用的控制代码.但是cp1252在这个范围内增加了一些排版细节和其他扩展,包括"智能引号".当您在MS Word中编写撇号时,它会将其更改为单个向左的智能引号’,因此在Word和其他Office应用程序中对原始类型的文本进行编码时会出现问题.
要将cp1252转换为UTF-8,您必须使用iconv('cp1252', 'utf-8', $somestring)而不是将utf8_encode其与"真实"ISO-8859-1相关联.