Ton*_*y-M 6 php linux csv bash character-encoding
我有data.csv文件,必须上传到服务器,解析....
该文件可以有不同的编码.我必须检测它并转换为utf8.
此时php函数 mb_detect_encoding总是返回utf8.我试过:
<?php
mb_detect_encoding(file_get_contents($_FILES["csv_uploadfile"]["tmp_name"]));
Run Code Online (Sandbox Code Playgroud)
要么
<?php
mb_detect_encoding(file_get_contents($saved_file_path));
Run Code Online (Sandbox Code Playgroud)
mb_detect_encoding返回utf8.
如果我使用bash命令
$ file -bi csv_import_1378376486.csv |awk -F "=" '{print $2}'
Run Code Online (Sandbox Code Playgroud)
它再次出现了iso-8859-1
所以,当我尝试
iconv --from-code=iso-8859-1 --to-code=utf-8 csv_import_1378382527.csv
Run Code Online (Sandbox Code Playgroud)
它不可读.
真正的编码是cp1251,我无法检测它. 任何人都可以帮我解决这个问题吗?
正如有人注意到了PHP文档在这里:
如果您尝试使用mb_detect_encoding()来检测字符串是否有效UTF-8,请使用严格模式,否则它就毫无价值.
所以你应该true在检测编码时尝试使用param:
mb_detect_encoding($str, mb_detect_order(), TRUE);
Run Code Online (Sandbox Code Playgroud)
如果您可以预测某些可能的编码,则可以列出它们而不是使用它们 mb_detect_order().
| 归档时间: |
|
| 查看次数: |
10677 次 |
| 最近记录: |