我正在使用包含Unicode Malayalam字符串的MySQL表。在使用PHP读取表时,只有前8个字符在fetched数组中存储/读取。
虽然字段中存在完整字符串,但余额部分不会存储在数组中。该字段是字符串Varchar(50) 默认情况下,数据库字符集设置为utf8mb4。 PHP代码如下:
$con = mysql_connect("localhost","root") or die ();
$db=mysql_select_db("drivingtest",$con); //connects database
mysql_set_charset('utf8mb4',$con);
$query1="select * from dt_mst where quest_no != ".$row." ORDER BY RAND() limit 1";
$result=mysql_query($query1) or die(mysql_error());
$row = mysql_fetch_array($result);
echo trim($row[2]);
仅显示字符串的第8个字符
答案 0 :(得分:1)
我认为你的字符串在包含6个字符的实体中被转义。例如,包含8个字符的代码:
ഇതു ഒരു നല്ല
转换为50多个字符的代码:
ഇതു ഒരു ന
查看您的数据库。检查您的数据库是否使用utf8字符集创建。如果不是,请运行以下命令:
ALTER DATABASE databasename DEFAULT CHARACTER SET utf8;
另外在PHP中,在任何选择查询之前设置utf8 mysql连接:
mysql_query("SET NAMES 'UTF8'");
mysql_query("SET CHARACTER SET 'UTF8'");
另见有用的链接:http://dev.mysql.com/doc/refman/5.0/en/charset-conversion.html