将ISO-8859-1转换为UTF-8问题

时间:2011-03-02 20:22:20

标签: php utf-8 iso-8859-1

我的一个项目从网上提取文件并阅读。本文档由第三方提供,不会更改(内容会更改,但格式和其他内容不会更改)。 问题是该文档包含内容复制并从Word粘贴,这是UTF-8,但文档是用ISO-8858-1编码的,因此这些字符以“?”形式保存到数据库中。

如果我翻过文本,并以UTF-8重新编码,而不是获取smartquotes和em破折号,我只会得到两个垃圾字符。

如何将带有UTF-8字符的ISO-8859-1文档转换回UTF-8,以便它可以按照最初创建的方式显示?

3 个答案:

答案 0 :(得分:3)

我在这里找到了解决方案:PHP: Problems converting "’" character from ISO-8859-1 to UTF-8

服务器声称它正在提供ISO-8859-1,但它确实是Windows-1252,它可以毫无问题地转换为UTF-8。

答案 1 :(得分:2)

$fixed = mb_convert_encoding($broken, "UTF-8", "ISO-8859-1");

不知道它是否能正确处理8859中嵌入的UTF-8,但这是“正常”的做法。手册页here。给它一个旋转,看看事情是否变得更清洁或更严重。

答案 2 :(得分:0)

幸运的是,ISO 8859-1是8位透明的。因此,您只需使用iconvmb_convert_encodingutf8_encode解码内容。

我不确定“我通过文本”是什么意思,但如果这是真正的UTF-8指定为ISO 8859-1,请尝试删除所有中间文本操作。如果仍然失败,请提供(简短)输入文档的示例。实际上它不是真正的UTF-8被指定为ISO 8859-1。