Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我们每天从客户端上传一个 CSV 文件,他们说该文件采用 UTF16-LE 编码。但是,当我iconv('UTF16-LE', 'UTF8')在 CSV 文件的每一行上运行时,进入数据库时看起来像这样:
iconv('UTF16-LE', 'UTF8')
Z.A.A.0.7.3.7
IE,每个角色之间都有一个 [?] 东西。
我尝试了 utf8_encode 以及 iconv 和不同编码类型的各种组合,以消除这种情况。有没有人有这方面的经验,以及如何将未知或不受支持的编码转换为 UTF8,或者至少是 PHP 和 MySQL 可读的东西?
UTF16 中的一半字符无法转换为 UTF8。UTF16 需要额外的 8 位。
UTF16 具有编码到每个字符串中的 LE 或 BE。只是为了好玩,您可以尝试从 UTF16 转换为 UTF8(没有“-LE”)。这将告诉您您的客户是否在 LE 上对您撒谎。但最有可能的情况是数据不适合。
一种解决方案是将其存储为数据库中的字节数组 (BINARY(x)),而不是文本。