2012-11-11 49 views
1

我正在使用包含Unicode馬來亞語字符串的MySQL表格。在使用PHP讀取表格時,只有前8個字符在讀取的數組中存儲/讀取。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個字符字符串

+3

什麼是你的PHP代碼做這個?沒有人能夠有效地幫助你,除非你發佈你所做的一切。 – Ben

回答

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

+2

如果你真的需要使用'mysql_ *'使用['mysql_set_charset'](http://php.net/mysql-set-charset)而不是'SET NAMES'。 – nkr

+0

$ con = mysql_connect(「localhost」,「root」)或死(「嘿失敗者,檢查你的服務器連接。」); \t \t \t \t $ db = mysql_select_db(「drivingtest」,$ con); \t //連接數據庫 mysql_set_charset('utf8mb4',$ con); \t $ QUERY1 =「從dt_mst選擇*; \t $結果= mysql_query($ QUERY1)或死亡(mysql_error()); \t $行= mysql_fetch_array($結果); 回波修剪($行[2]) 「。 「; – user1816193