我真的很感激这方面的一些帮助。我在这个问题上浪费了好几天,我在网上找到的任何建议似乎都没有给我一个解决办法。
我有一个来自供应商的 CSV 文件。它似乎是从 Microsoft 系统中导出的。
我正在使用 PHP 将数据导入 MySQL(两个最新版本)。
我有一个特殊的记录,其中包含一个我无法摆脱的奇怪角色。手动编辑以删除字符是可能的,但我更喜欢自动化解决方案,因为这会每天发生多次。
该字符似乎是对“智能引用”的解释。十六进制编辑器告诉我字符代码是 C2 和 92。在十六进制编辑器中,它看起来像一个奇怪的 A,后跟一个智能引号。在其他编辑器和 Calc、Writer 等中,它只是显示为一个框。メ</p>
我正在使用 mb_detect_encoding 来确定编码。CSV 文件中的所有记录都以 ASCII 格式返回,但带有奇怪字符的记录除外,它以 UTF-8 格式返回。我可以将有问题的记录插入 MySQL,它只是在 Workbench 中显示为一个正方形。
MySQL 表配置为utf-8 – utf8_unicode_ci
其他不常见的 UTF 字符(例如分数)是可以的。
我已经尝试了很多解决方案...
- 如何在 PHP 中检测格式错误的 utf-8 字符串?
- 从字符串中删除非 utf8 字符
- 删除无效/不完整的多字节字符
- 如何在 PHP 中检测格式错误的 utf-8 字符串?
- 如何在 PHP 中替换 Microsoft 编码的引号
等等等等,但没有一个对我有用。
我真正想做的就是删除或替换有问题的字符,理想情况下是搜索和替换十六进制值,但我尝试过的示例都没有奏效。
任何人都可以帮我推进这个吗?
编辑:由于
声誉不足,无法发布答案:
感谢您的意见。非常感激。
我将使用十六进制搜索和替换:
$DodgyText = preg_replace("/\xEF\xBE\x92/", "" ,$DodgyText);
我知道这不是优雅的解决方案,但我需要快速修复,这对我有用。