0

変換できるphp関数はありますか

ابب

それに等しいユニコード文字

ت ب ا

私はたくさんグーグルで検索しましたが、この目的で使用できるPHP組み込み関数はないと思います。実際には、ユーザーが送信したコメント (Unicode 文字) を mysql データベースに保存したいと考えています。اببただし、mysqlデータベースにはこの形式で保存されます。私はSET NAMES 'utf8'mysqlクエリでも使用しています。出力は実際の Unicode 文字で問題ありませんが、mysql への挿入は、ابب私が望まないこの形式になっています。任意の解決策??

4

3 に答える 3

1

私はそれをグーグルで検索し、ここで非常に興味深い解決策を見つけました

私も試してみましたが、うまくいっていると思います

<?php
    $trans_tbl = get_html_translation_table(HTML_ENTITIES);
    foreach($trans_tbl as $k => $v)
    {
        $ttr[$v] = utf8_encode($k);
    }
    $text = '&#1575;&#1576;&#1576';
    $text = strtr($text, $ttr);
    echo $text;
?>

mysql ソリューションの場合、文字セットを次のように設定できます

$mysqli = new mysqli($host, $user, $pass, $db);

if (!$mysqli->set_charset("utf8")) {
die("error");
}
于 2013-04-05T05:44:51.830 に答える
1

もし、あんたが

utf-81 -フォームを含むHTML ページの lang エンコーディングを設定します
2 - フォームを使用して、関連する MySQL db テーブルに入力を入力します
3 - すべての照合をutf8_unicode_ciMySQL に設定します (テーブルと行の照合)
4 - 許可がある場合MySQL DB照合を次のように設定することもできます utf8_unicode_ci

その後、mySQL レコードにもエンティティは表示されません

これは私が使用している私のソリューションであり、多くのユニコード文字を持つ母国語でも問題はありません。

以下に、私の db 接続 php コードと推奨事項を紹介します (準備済みステートメントを使用します。http://php.net/manual/en/mysqli.quickstart.prepared-statements.phpを確認してください) 。

//mysql bağlantısı
global $db_baglanti;
$db_baglanti = new mysqli(vt_host, vt_user, vt_password, vt_name);
if ($db_baglanti->connect_errno) 
{
    echo "MySQL bağlantısı kurulamadı: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$db_baglanti->set_charset("utf8")) 
{
    printf("utf8 karakter setinin yüklenmesinde problem oluştu: %s\n", $db_baglanti->error);
} 
else 
{
    $db_baglanti->set_charset("utf8");
}
于 2013-04-05T05:52:28.747 に答える
0

mysql_set_charset() http://php.net/manual/en/function.mysql-set-charset.phpを使用してmysql接続エンコーディングを設定できるはずだと思うので、DBからこれらを取得して表示すると問題ないはずです.

php.net によると、「この拡張機能は PHP 5.5.0 で廃止され、将来的に削除される予定です。代わりに、MySQLi または PDO_MySQL 拡張機能を使用する必要があります。」

于 2013-04-05T05:45:18.067 に答える