【发布时间】:2013-09-09 07:24:10
【问题描述】:
我有 data.csv 文件,必须上传到服务器,解析......
这个文件可以有不同的编码。我必须检测到它并转换为 utf8。
此时php函数mb_detect_encoding总是返回utf8。 我试过了:
<?php
mb_detect_encoding(file_get_contents($_FILES["csv_uploadfile"]["tmp_name"]));
或
<?php
mb_detect_encoding(file_get_contents($saved_file_path));
mb_detect_encoding 返回 utf8。
如果我使用 bash 命令
$ file -bi csv_import_1378376486.csv |awk -F "=" '{print $2}'
它重新运行 iso-8859-1
所以当我尝试时
iconv --from-code=iso-8859-1 --to-code=utf-8 csv_import_1378382527.csv
它不可读。
真正的编码是cp1251,我检测不到。 谁能帮我解决这个问题?
【问题讨论】:
-
这是文本编码的固有问题。你不能总是正确地检测到它们,你只能在大多数时候猜测它们。除非有一些可用的元信息。
标签: php linux bash csv character-encoding