php - 如何让 PHP 中的 fgetcsv() 处理日文字符?

标签 php html unicode fopen

我从 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
}

因此,当使用 fopenfgetcsv 时,日语字符似乎被跳过了。

我的文件保存为 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/

相关文章:

html - 制作页面以告诉浏览器不要缓存/保留输入值

html - 在段落左侧放置图标

javascript - 正则表达式:在某些情况下不起作用

c++ - C++0x 中的 Unicode 支持

c# - Stimulsoft Pdf 报告动态 unicode 字符串

php - 自动更新没有模型的表中的时间戳

php - 我如何解决存储过程中不支持 "LOAD DATA"和/或 MySQL 中的 TRANSACTION 中缺少 EXIT HANDLER 的问题?

c++ - qmap unicode qstring 不工作

PHP mysqli_fetch_all 给我一个空白屏幕

php - 在 PHP 中进行国际化的最佳方法是什么?