如何在HTML,PHP和&amp ;;中处理日语字符MySQL的

时间:2017-02-02 09:43:00

标签: php mysql utf-8 decode

我编写了以下代码,以便从包含日文字符的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>

这是带有日文字符的excel表格: enter image description here

我的问题是:

  • 如何在网络浏览器上正确显示这些日文字符?我尝试使用utf_decode()函数。它没有帮助。
  • 此外,如果我想将这些日文字母存储在MySQL数据库中,我需要做出哪些更改?

目前,浏览器在使用utf_decode()功能后将日文字符显示为问号和一些垃圾值。当我删除它时,它会在屏幕上显示垃圾值。

修改 以下是excel文件中的示例数据:

  

アイリッシュ·セッターアイリッシッシッータータースパニニルアイリッシュウルフハウンド

2 个答案:

答案 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">

中指定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。)