sql >> データベース >  >> RDS >> Mysql

英語以外の文字を保存し、「?????」を取得しました-MySQL文字セットの問題

    悪いニュース。ただし、最初に再確認してください:

    SELECT col, HEX(col)...
    

    テーブルの内容を確認します。ヘクスが3Fを示している場合 、その後、データは失われます。正しく保存されたdal 文字は16進数である必要がありますD8AF; hah 16進数のD8AD

    何が起こったのか:

    • utf8でエンコードされたデータがあります(良い)
    • SET NAMES latin1 有効でした(デフォルトですが間違っています)
    • 列が宣言されましたCHARACTER SET latin1 (デフォルトですが間違っています)

    INSERTedすると データは、ペルシア語の文字の値を持たないlatin1に変換されたため、質問マークで置き換えられました。

    治療法(将来の `INSERTSの場合):

    • 非推奨のmysql_*インターフェースの代わりにmysqli_*インターフェースを使用してアプリケーションを再コーディングします。
    • utf8でエンコードされたデータ(良好)
    • mysqli_set_charset('utf8')
    • 列やテーブルのデフォルトがCHARACTER SET utf8であることを確認します
    • Webページに表示している場合は、<meta...utf8> 上部近くにある必要があります。

    上記の説明は、CHARACTER SETに関するものです。 、文字のエンコーディング。 COLLATIONのヒントをご覧ください 、比較と並べ替えに使用されます。

    これらを同等に扱いたい場合:'بِسْمِ' ='بسم'、COLLATIONに(utf8_general_ciの代わりに)utf8_unicode_ciを使用します 。




    1. SQL Server Express LocalDBをリモートで接続できますか?

    2. 1つのコマンドで行を選択または挿入する

    3. テキストまたは整数値を返す関数を作成するにはどうすればよいですか?

    4. ストアドプロシージャのポイントは何ですか?