1

我正在使用一个包含 Unicode 马拉雅拉姆语字符串的 MySQL 表。使用 PHP 读取表格时,只有前 8 个字符被存储/读取到获取的数组中。

尽管字段中存在完整的字符串,但余额部分并未存储在数组中。该字段是字符串 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 个字符

4

1 回答 1

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

于 2012-11-11T15:19:32.973 回答