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では、selectクエリの前にutf8mysql接続を設定します。

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 に答える