MySQL - 从PHP插入日语 - 编码麻烦

时间:2009-08-17 10:35:30

标签: php mysql database unicode encoding

我正在尝试在mysql表中插入一些日语单词! 如果我使用phpMyAdmin插入'こんにちは',那么从phpMyAdmin可以正确显示该单词。 但是,如果我尝试通过php插入它,如下所示:

mysql_connect($Host, $User, $Password);
mysql_select_db($Database);

$qry = "INSERT INTO table VALUES (0 , 'こんにちは')";

echo mysql_query($qry);

在phpMyAdmin中我看到“ã”ã,“ã”ã¡“”为什么?

如果我尝试从数据库中获取:

$arr = mysql_fetch_array(mysql_query("SELECT * FROM table where id = 1"));

echo $arr[1];

浏览器没有显示任何内容!!!

我该如何解决?

提前感谢您的帮助!!!


〜EDIT〜

我的数据库排序规则设置为utf8_general_ci


〜编辑2~

我不需要在HTML页面上显示输出,但日语单词打印在XML页面上,其编码设置为UTF-8。

$plist = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
$plist .= "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n";
$plist .= "<plist version=\"1.0\">\n";
$plist .= "<array>\n";
$plist .= "\t<dict>\n";
$plist .= "\t\t<key>test</key>\n";
$plist .= "\t\t<string>".$arr[1]."</string>\n";
$plist .= "\t</dict>\n";
$plist .= "</array>\n";
$plist .= "</plist>";

echo $plist;

此代码的输出为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <dict>
        <key>test</key>
        <string></string>
    </dict>
</array>
</plist>

因此,关键“测试”没有价值......我该怎么办?谢谢!


〜已解决〜

连接数据库后使用函数mysql_set_charset()解决了问题!

2 个答案:

答案 0 :(得分:3)

在插入查询

之前尝试此操作
mysql_query("SET NAMES utf8");

还不确定您是否设置了数据库和网页的正确字符集。

HTML Head部分中的Charset?

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

和/或类似

   header( 'Content-Type: text/html; charset=utf-8' );

以下内容将帮助您获得更多有关如何操作的建议..如果某些内容无效,则会回复。

在这里查看更多内容

Storing and displaying unicode string (हिन्दी) using PHP and MySQL

How to make MySQL handle UTF-8 properly

setting utf8 with mysql through php

PHP/MySQL with encoding problems

答案 1 :(得分:0)

你必须将数据库字符集设置为utf8并将数据库排序设置为utf8_general_ci(或其他utf8排序规则)然后我认为你的问题已经解决了