我从 google 电子表格 rss 提要中生成了以下数据。
いきます,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 header 将其设置为 UTF-8,HTML header 中有一个元标记将其标记为 UTF-8。我不认为它是文档本身,因为它可以通过 file_get_contents
方法显示字符。
谢谢
最佳答案
我无法向 the answer 添加评论来自达里安
我重现了这个问题,更改语言环境后问题就解决了。 在尝试重复此操作之前,您必须在服务器上安装 jp 语言环境。
Ubuntu 将新行添加到文件/var/lib/locales/supported.d/local
ja_JP.UTF-8 UTF-8
然后运行命令
sudo dpkg-reconfigure locales
或者
sudo locale-gen
Debian 只需执行“dpkg-reconfigure locales”并选择所需的语言环境 (ja_JP.UTF-8)
我不知道如何在其他系统上执行此操作,请尝试通过关键字“locale-gen locale”搜索您的服务器操作系统。
在php文件中,打开csv文件之前,添加这一行
setlocale(LC_ALL, 'ja_JP.UTF-8');
关于php - 如何让 PHP 中的 fgetcsv() 处理日文字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6257990/