如何区分 PHP 中的 MacRoman 和 Windows-1251 编码?
我已经拉了几天头发了。我用谷歌搜索和堆栈溢出很多但没有成功。
我正在从 csv 文件导入一些数据。此 CSV 文件是在 Windows 或 Mac 上的 Excel 中生成的,它提供了 2 种不同的编码“Windows-1251”和“MacRoman”。两者都是 ISO-8859-1 的变体,并且 mb_detect_encoding 没有帮助:它总是检测我放入列表中的第一个编码。
例如:
mb_detect_encoding($buffer, 'macroman, windows-1251, UTF-8');
将给出“macroman”。
使用相同的字符串,尝试 :
mb_detect_encoding($buffer, 'windows-1251, macroman, UTF-8');
将给出“window-1251”。
那么如何才能正确地发挥作用呢?我需要将输入字符串(csv 文件内容)转换为 utf-8 以插入数据库。
也许我错过了什么?你们通常如何解析csv文件,并将数据正确保存在DB(utf8)中。
感谢您提供任何线索!
I'm pulling my hairs for a few days now. I've googled and stackoverflowed a lot without success.
I'm importing some data from a csv file. This CSV file is generated in Excel either on Windows or Mac, which gives 2 different encodings "Windows-1251" and "MacRoman". Both are variants from ISO-8859-1 and mb_detect_encoding dos not help : it always detect the first encoding I put in the list.
For example :
mb_detect_encoding($buffer, 'macroman, windows-1251, UTF-8');
Will give "macroman".
With the same string, trying :
mb_detect_encoding($buffer, 'windows-1251, macroman, UTF-8');
will give "window-1251".
So how can you properly make the difference ? I need to convert my input string (the csv file content) to utf-8 to insert into the DB.
Maybe I'm missing something? How do you guys usually manage to parse csv files, and save data properly in DB (utf8).
Thanks for any clue!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为确保正确处理此问题的唯一方法是首先定义保存 csv 文件的过程。然后你只需要对传入的内容进行 utf8 编码就可以了......
I think the only way to make sure this is handled properly is to define a process for saving the csv file in the first place. Then you just have to utf8_encode what's coming in and it'll go fine...