我编写了以下代码,以便从包含日文字符的Excel文件中读取内容并显示在网页上:
<!DOCTYPE html>
<?php
//header("Content-Type: text/plain; charset=UTF-8"); // output as text file
header("Content-Type: text/html; charset=UTF-8");
if(isset($_POST['upload'])){
unset($_POST['upload']);
$file_name = basename($_FILES['csv_file']['name']);
$name = pathinfo($file_name, PATHINFO_FILENAME );
$ext = pathinfo($file_name, PATHINFO_EXTENSION);
$csvFile = fopen($_FILES['csv_file']['tmp_name'], 'r');
//skip first line
fgetcsv($csvFile);
$flag = true; // flag set false when query fails for one or more records
while($line = fgetcsv($csvFile)){
if(count($line)>0){
$data = utf8_decode($line[0]);
echo "$data <br>";
}
}
if($flag)
echo "<h1 style='color:limegreen'> All records imported successfully ! </h1>";
else
echo " Error while fetching one or more records";
fclose($csvFile);
}
?>
<form method="post" action="importExcel.php" enctype="multipart/form-data">
<input type="file" name="csv_file" id="csv_file" accept=".xlsx" >
<input type="submit" name="upload" id="upload" >
</form>
我的问题是:
utf_decode()
函数。它没有帮助。目前,浏览器在使用utf_decode()
功能后将日文字符显示为问号和一些垃圾值。当我删除它时,它会在屏幕上显示垃圾值。
修改 以下是excel文件中的示例数据:
アイリッシュ·セッターアイリッシッシッータータースパニニルアイリッシュウルフハウンド
答案 0 :(得分:0)
您不需要utf8_decode
,添加header("Content-Type: text/html; charset=UTF-8");
会对您有用。喜欢 - &GT;
注意: utf8_decode This function converts the string data from the UTF-8 encoding to ISO-8859-1.
但您需要utf-8
。
注意:使用fgetcsv
在阅读excel file
时可能无法提供所需的数据。在csv中转换它或使用一些excel阅读器库。
header("Content-Type: text/html; charset=UTF-8");
$str="七起千去";
echo "$data <br>";
注意:如果您没有使用标题添加<meta charset="utf-8">
到您的网页,这也应该有效。
答案 1 :(得分:0)
不使用任何编码器/解码器,只会让事情变得更糟。
有CHARACTER SET utf8
(或utf8mb4)
如前所述,确实有标题或元数据。
将php和mysql之间的连接设置为UTF-8。 (让我们看看要检查的部分代码。)
请在<form method="post" ... accept-charset="UTF-8">
请告诉我们出了什么问题。至少有5种&#34;不工作&#34;的变体,如下所示:Trouble with utf8 characters; what I see is not what I stored
如果您可以获得HEX,请注意アイリッ
的utf8编码为E382A2 E382A4 E383AA E38383
。其他片假名字符也是E3xxyy
。 (汉字和平假名也是3个字节:Ewxxyy。)