我正在开发一个本地网站,提供本地语言的信息。在mysql数据库中,有一个名为pagecontent的表,它有一个名为“text”的列。“文本”列类型是文本,排序规则是utf8_sinhala_ci
在mysql中,它通常显示字体:
但是当我把它放到php页面并回显该值时,它会显示诸如??????????
之类的问号。
但是如果我硬编码并回送,那么它也会在php页面中正常显示。
当我从数据库中获取值时,我觉得有些问题。但我找不到错误。
我也试过遵循密码。
mysql_query ("set collation_connection='utf8_sinhala_ci'");
$result = mysqli_query($this->connecDB,"SELECT * FROM pageContent");
但那不管用。
最佳答案
当我从数据库中获取值时,我觉得有些问题。但是
我找不到错误。我也试过遵循密码。
您需要确保从连接到数据库,到表的整个链都是utf8干净的。我对a similar question here有一个详细的答案。
但在您的例子中,请检查实际的mysql服务器my.cnf
文件。下面将整条链设置为UTF-8:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
更直接地,看看你的代码:
mysql_query("set collation_connection='utf8_sinhala_ci'");
$result = mysqli_query($this->connecDB,"SELECT * FROM pageContent");
在一行中,您正在调用
mysql_query
,在下一行中,您正在调用mysqli_query
。但这些方法相互冲突,不应一起使用。它应该是这样的:mysqli_query($this->connecDB, "SET collation_connection='utf8_sinhala_ci'");
$result = mysqli_query($this->connecDB,"SELECT * FROM pageContent");
请注意我是如何在您的
mysqli_query
之前设置mysqli_query($this->connecDB,…
。它将在您用于SET collation_connection='utf8_sinhala_ci'
的同一连接上发送查询。或者你可以试试这个:mysqli_query($this->connecDB, "SET NAMES 'utf8'");
$result = mysqli_query($this->connecDB, "SELECT * FROM pageContent");