1

我们每天从客户端上传一个 CSV 文件,他们说该文件采用 UTF16-LE 编码。但是,当我iconv('UTF16-LE', 'UTF8')在 CSV 文件的每一行上运行时,进入数据库时​​看起来像这样:

Z.A.A.0.7.3.7

IE,每个角色之间都有一个 [?] 东西。

我尝试了 utf8_encode 以及 iconv 和不同编码类型的各种组合,以消除这种情况。有没有人有这方面的经验,以及如何将未知或不受支持的编码转换为 UTF8,或者至少是 PHP 和 MySQL 可读的东西?

4

1 回答 1

2

UTF16 中的一半字符无法转换为 UTF8。UTF16 需要额外的 8 位。

UTF16 具有编码到每个字符串中的 LE 或 BE。只是为了好玩,您可以尝试从 UTF16 转换为 UTF8(没有“-LE”)。这将告诉您您的客户是否在 LE 上对您撒谎。但最有可能的情况是数据不适合。

一种解决方案是将其存储为数据库中的字节数组 (BINARY(x)),而不是文本。

于 2013-05-02T19:14:24.213 回答