从MySQL获取中文字符

Ric*_*lim 1 php mysql utf-8

我正在尝试显示我保存在MySQL数据库中的中文字符,该数据库以utf8_unicode_ci类型保存.我在网上看到了几个解决方案,但没有任何效果.

以下是我的连接文件:

$conn = mysql_connect("localhost","root","password");
mysql_set_charset('utf8',$conn);
mysql_query("SET CHARACTER SET utf8 ");
mysql_select_db("database");
Run Code Online (Sandbox Code Playgroud)

以下是我的查询:

mysql_query("SET character_set_results=utf8", $conn);

$sql = mysql_query("select * from webdata",$conn);
Run Code Online (Sandbox Code Playgroud)

但它仍然显示????.有任何想法吗?

Mar*_*ood 6

如何解决......

当我有类似的问题时,我首先在php中使用我的文本编码

echo mb_detect_encoding ( $text );
Run Code Online (Sandbox Code Playgroud)

它显示了来自我的查询的文本的编码.这告诉我,当我的数据库中包含中文或俄文字符时,我从mysql_query获取ASCII.

我做的更改是在mysql_connect之后添加了以下内容

mysql_set_charset('UTF8');
Run Code Online (Sandbox Code Playgroud)

我的数据库是utf8_unicode_ci整理,我可以看到中文字符.

因此,如果mb_detect_encoding现在为您的文本提供UTF8,那么您将能够显示中文字符.

下一步是确保传递给浏览器的内容具有正确的标题...

header('Content-Type: text/html; charset=UTF-8');
Run Code Online (Sandbox Code Playgroud)

将上面的代码置于php的代码顶部,以确保浏览器期望您的编码.

现在这应该是问题,但理想情况下你应该使用PDO或mysqli而不是mysql_connect方法.在这种情况下,等效的程序样式命令是..

$link = mysqli_connect('localhost', 'my_user', 'my_password', 'test');
mysqli_set_charset($link, "utf8");
Run Code Online (Sandbox Code Playgroud)

其中$ link相当于您与数据库的连接.