[英]PHP read file with Japanese contents
我正在编写一个 php 脚本,其中我需要从 CSV 文件中获取数据,其中一些内容是用日语编写的。 但是,我根本无法正确读取或显示数据。
我正在阅读的文件以 iso-8859-1 字符集编码。 我还尝试使用 iconv 将其转换为 UTF-8 编码文件,但是这样做似乎完全破坏了文件中的数据,并且文本在之后的任何应用程序中都无法正确显示。
这是我现在正在使用的脚本:
<?php
header("Content-Type: text/html; charset=ISO-8859-1");
setlocale(LC_ALL, 'ja_JP.EUC-JP');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<?php
$row = 1;
if (($handle = fopen("/srv/http/Japanese/testFile.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$row++;
for ($i = 0; $i < 4; ++$i) {
echo $data[$i] . "<br />";
}
echo "<br />";
if ($row > 1000) break;
}
fclose($handle);
} else echo print_r(error_get_last(),true);
?>
</body>
</html>
添加了前两行 PHP 以尝试解决此问题,但没有奏效。
读取引き込む, 762, 762, 7122
文件中的字符串输出如下所示:
°ú¤¹þ¤à
762
762
7122
此外,这似乎不仅仅是数据显示的问题。 我还尝试使用if ($data[$i]) == "引き込む")
测试数据,即使我知道这是正在读取的字符串,它似乎也是错误的。
我也尝试过使用其他读取文件的方法,但是无论我使用哪种 PHP 方法来读取文件,我似乎都遇到了完全相同的问题。
任何帮助将不胜感激。
您需要将带有 iconv 的 csv 文件转换为 ja_JP.EUC-JP(并将元标记中的字符集值也设置为此值)或将 csv 转换为 utf8 并设置适当的字符集 (ja_JP.UTF8)。
我想发表评论,但我没有积分,所以如果我的答案不正确,请原谅我
从我在谷歌和 Stackoverflow 上可以找到的内容来看,这似乎是一个解决方案,您只需将其放入您的代码中
这段代码
setlocale(LC_ALL, 'ja_JP');
$data = array_map('str_getcsv', file('japanese.csv'));
var_dump($data);
使用我本地的以下 CSV 文件(japanese.csv,以 UTF-8 保存)。
日本語,テスト,ファイル
2行目,CSV形式,エンコードUTF-8
结果是
array(2) {
[0]=>
array(3) {
[0]=>
string(9) "日本語"
[1]=>
string(9) "テスト"
[2]=>
string(12) "ファイル"
}
[1]=>
array(3) {
[0]=>
string(7) "2行目"
[1]=>
string(9) "CSV形式"
[2]=>
string(20) "エンコードUTF-8"
}
}
这可能会帮助您了解更多: 喜欢其他帖子
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.