使用来自UTF-16LE类型的csv的fgetcsv错误地提取外部内容

时间:2016-03-03 09:57:42

标签: php csv fgetcsv utf-16le mb-convert-encoding

更新

我找到了解决此问题的方法查看此链接

Enable Extract and Display Foreign Language Content in browsers using fgetcsv

代码:

header('Content-Type: text/html; charset=utf-8');
$row = 1;
$up_file = 'text_SHOT_S.csv';
setlocale(LC_ALL, 'en_US.UTF-8');
if (($handle = fopen($up_file, "r")) !== FALSE) {   
     while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
        $num = count($data);
        $row++;
        for ($c=0; $c < $num; $c++) {
           echo mb_convert_encoding($data[$c],'UTF-8','UTF-16').'<br>';
        }
    }
    fclose($handle);}

Download CSV sample

输出

  

的iD   英语[en]中文[zh]德语[de]印地语[hi]印地语(TOGO)[hi_TG]   日语[ja] ID [1310:90]开卷:Accu位置差异太大。   检查层压板断裂Æ扷卨嘚@葘葘孨噍翮巇輧夂棥棥夈服装L牐昦昦吭L L L L L L L L L L L L L   grossePositionsänderung - AufLaminatrissprüfen290û巺凅衮缺   ¢キュムレーターき佮置ヮ嵌〧奍すぎます。〠ミミートがナ墌ていないかズ詗ててくださいID [1311:91]开卷:Accu   对于自动拼接来说太小了扷扷卨@ê勼勼报抡盄葘嚧勇缝勇輏Abwickler:Akku   FüllstandzukleinfürAutospleiss291û巺凅衮缺   ê臕则継綒が众にはアキュムレーターのレベルが」展すぎます」

我得到提取内容为

  

û巺衮缺臕臕継ががが众にはアキュムレーターのレベルが“展すぎます”

而不是这个

  

巻出装置:自动纸継を行ををを

有一些像

这样的特殊字符
  

ûê@Ä〠

1 个答案:

答案 0 :(得分:0)

我已经研究了一下,发现other SO tread有类似的问题,如果你还没有,也许应该通过它。