【发布时间】:2013-12-02 15:38:46
【问题描述】:
我有很多图像是从 SQL 转储中导入的,使用 utf-8 编码。因此,在 jpeg 图像的开头,我看到的不是“FF D8 FF E0”,而是“C3 BF C3 98 C3 BF C3 A0”。
我试过 iconv('utf-8', 'iso-8859-1', $data) 但它不能转换整个文件(utf-8 中有字符不能转换为 iso-8859- 1.
如何在不考虑编码的情况下将简单的 utf-8 转换为一字节二进制?
【问题讨论】:
-
如果图像确实被视为 iso-8859-1 文本并作为 utf-8 文本写入数据库,并且您无法将它们转换回来,那么有些奇怪。它们应该是可逆的 - utf-8 中的 all 字符在 iso-8859-1 中不可表示并不重要,因为 only 字符来自 iso-8859- 1 可能已在源图像中找到,因为它们被处理为 iso-8859-1。哪些角色给你带来了问题?另外,我希望不言而喻,无论编码如何,图像都不应该被视为文本。 :)
-
如果我是你,我根本不会存储编码为 UTF8 的图像。这解决了这里的所有问题。
-
你需要知道转换为utf-8时使用的编码
-
@Artur 很遗憾我没有图片原件。
-
@Epsiloncool,你能把其中一张图片放到网上供我们试验吗?从您的示例来看,至少前两个字节似乎已成功且可逆地从 iso-8859-1 或 windows-1252(或其他一些包括 ÿ 和 Ø 的 8 位编码)转换为 utf-8。
标签: php encoding utf-8 iconv utf8-decode