Chr*_*ris 5 html php unicode fopen
我从谷歌电子表格RSS订阅源生成以下数据.
????,go,5
???,come,5
?????,"go home, return",5
????,school,5
????,supermarket,5
??,station,5
????,airplane,5
Run Code Online (Sandbox Code Playgroud)
使用PHP我可以执行以下操作:
$url = 'http://google.com.....etc/etc';
$data = file_get_contents($url);
echo $data; // This prints all Japanese symbols
Run Code Online (Sandbox Code Playgroud)
但如果我使用:
$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
}
Run Code Online (Sandbox Code Playgroud)
因此,无论是使用时出现的日文字符被跳过fopen或fgetcsv.
我的文件保存为UTF-8,它有PHP标头将其设置为UTF-8,并且HTML头中有一个元标记将其标记为UTF-8.我不认为它是自己的文档,因为它可以通过该file_get_contents方法显示字符.
谢谢
我无法对Darien 的答案添加评论
我重现了该问题,更改区域设置后问题得到解决。在尝试重复此操作之前,您必须在服务器上安装 jp 语言环境。
Ubuntu 在文件 /var/lib/locales/supported.d/local 中添加一个新行
ja_JP.UTF-8 UTF-8
Run Code Online (Sandbox Code Playgroud)
并运行命令
sudo dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)
或者
sudo locale-gen
Run Code Online (Sandbox Code Playgroud)
Debian 只需执行“dpkg-reconfigure locales”并选择必要的区域设置(ja_JP.UTF-8)
我不知道如何在其他系统上执行此操作,请尝试通过关键字“locale-gen locale”搜索您的服务器操作系统。
在 php 文件中,在打开 csv 文件之前,添加此行
setlocale(LC_ALL, 'ja_JP.UTF-8');
Run Code Online (Sandbox Code Playgroud)