如何在PHP中获取fgetcsv以使用日语字符?

问题描述

| 我从google电子表格RSS Feed生成了以下数据。
いきます,go,5 
きます,come,5 
かえります,\"go home,return\",5 
がっこう,school,5 
スーパー,supermarket,5 
えき,station,5 
ひこうき,airplane,5 
使用PHP,我可以执行以下操作:
$url = \'http://google.com.....etc/etc\';
$data = file_get_contents($url);

echo $data; // This prints all Japanese symbols
但是,如果我使用:
$url = \'http://google.com.....etc/etc\';
$handle = fopen($url);

while($row = fgetcsv($handle)) {
    print_r($row); // Outputs [0]=>,[1]=>\'go\',[2]=>\'5\',etc,i.e. the Japanese characters are skipped
}
因此,当使用
fopen
fgetcsv
时,似乎跳过了日语字符。 我的文件另存为UTF-8,它的PHP标头将其设置为UTF-8,HTML头中有一个Meta标记将其标记为UTF-8。我认为这不是文档本身,因为它可以通过
file_get_contents
方法显示字符。 谢谢     

解决方法

        我无法在Darien的答案中添加评论 我重现该问题,更改语言环境后,问题已解决。 您必须在服务器上安装jp语言环境,然后再尝试重复此操作。 的Ubuntu 在文件/var/lib/locales/supported.d/local中添加新行
ja_JP.UTF-8 UTF-8
并运行命令
sudo dpkg-reconfigure locales
要么
sudo locale-gen
德比安  只需执行\“ dpkg-reconfigure locales \”并选择必要的语言环境(ja_JP.UTF-8) 我不知道该如何在其他系统上使用,请尝试通过关键字“ locale-gen locale \”搜索服务器操作系统。 在php文件中,在打开csv文件之前,添加以下行
setlocale(LC_ALL,\'ja_JP.UTF-8\');
    ,        看起来可能与PHP Bug 48507相同。 您是否曾在运行代码之前尝试更改过PHP语言环境设置,然后又对其进行了重置?     ,        您可能要考虑此库。我记得曾经使用过它,它比内置的处理CSV文件的PHP函数要好得多。がんばって!     ,        可能是iconv字符编码可以帮助您 http://php.net/manual/zh/function.iconv.php     ,        您可以不使用
fgetcsv
和朋友而手动完成此操作:
<?php
$file = file(\'http://google.com.....etc/etc\');
foreach ($file as $row) {
    $row = preg_split(\'/,(?!(?:[^\",]|[^\"],[^\"])+\")/\',trim($row));
    foreach ($row as $n => $cell) {
        $cell = str_replace(\'\\\\\"\',\'\"\',trim($cell,\'\"\'));
        echo \"$n > $cell\\n\";
    }
}
另外,您也可以选择一种更巧妙的闭包方式:
<?php
$file = file(\'http://google.com.....etc/etc\');

array_walk($file,function (&$row) {
    $row = preg_split(\'/,trim($row));
    array_walk($row,function (&$cell) {
        $cell = str_replace(\'\\\\\"\',\'\"\'));
    });
});

foreach ($file as $row) foreach ($row as $n => $cell) {
    echo \"$n > $cell\\n\";
}
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...