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

SQLException.getMessage()からの日本語文字の表示

    ラケシュ12345
    

    正解ですか?

    おそらく挿入時に何が起こったのか

    • データに対して正しいutf8エンコーディングがあり、
    • SET NAMES latin1-デフォルトまたは誤って、
    • テキストが格納された列(またはテーブル)は、CHARACTER SET latin1で宣言されました 、おそらくデフォルトで。

    を実行すると、データが正しく保存されていることを確認できます。
    SELECT col, HEX(col) ...
    

    その文字列をフェッチすると、16進数はE383A9E382B1E382B7E383A5EFBC91EFBC92EFBC93EFBC94EFBC95になります。 。 E383から始まる6つの16進数のグループがあることに注意してください。 カタカナまたはEFBCの場合 「全幅桁」の場合。

    テーブルにまだlatin1と表示されていると仮定すると、データは失われず、2ステップALTER それを修正します。要約:

    ALTER TABLE Tbl MODIFY COLUMN col VARBINARY(...) ...;
    ALTER TABLE Tbl MODIFY COLUMN col VARCHAR(...) ... CHARACTER SET utf8 ...;
    

    ここで、長さは十分に大きく、他の「...」には、すでに列にあるもの(NOT NULLなど)があります。

    (ごく最近まで、この質問に対する明確で完全な回答を提供することはできませんでした。)




    1. jsonパスに特殊文字を含むMySQL

    2. 左結合を1つの結果を返すように制限しますか?

    3. T-SQL TRY CATCHの問題?

    4. postgres-psycopg2を使用してデータベースを削除することはできません