php - 处理 PHP/MySQL 导入的奇怪编码

标签 php mysql csv encoding

我们每天从客户那里收到一个 CSV 文件上传,他们说该文件采用 UTF16-LE 编码。但是,当我在 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)) 而不是文本存储在数据库中。

关于php - 处理 PHP/MySQL 导入的奇怪编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16345854/

相关文章:

php - Cronjob 中的方法发布

php - 尝试构建 php 代码时出现 Sublime 错误

php - MySQL 和 PHP : Display matrix table dynamically

python - 使用带有 df.loc == 语句的append() Pandas Python

powershell - 对导入 CSV 的限制?

php - 从字符串调用 php 函数(带参数)

php - 从android studio到php到mysql的连接存储在phpmyadmin中

python - 使用 win32com 或 xlrd 的 Excel 数据库或 mysql 中的数据库

mysql - 使用 Magmi 导入 Magento 产品 - 访问数据库被拒绝

python - 如何使用 Python 计算 csv 文件中某个值出现的次数?