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 です。検出できません。 誰でもこの問題を解決するのを手伝ってもらえますか?

4

1 に答える 1

9

ここのPHPドキュメントで誰かが気付いたように:

文字列が有効な UTF-8 かどうかを検出するために mb_detect_encoding() を使用しようとする場合は、strict モードを使用してください。それ以外の場合は、まったく意味がありません。

したがって、trueエンコーディングを検出するときにパラメーターを使用してみてください。

mb_detect_encoding($str, mb_detect_order(), TRUE);

考えられるエンコーディングをいくつか予測できる場合は、 を使用する代わりにそれらをリストできます mb_detect_order()

于 2013-09-12T21:34:45.087 に答える