1

Linux(x86_64)用のmysqlデータベースVer 14.14Distrib5.5.21を使用しています。Javaクラスのプリペアドステートメントを使用して、このデータベースに文字列を保存します。

そして今、私が保存するすべての文字列がUTF-8形式であり、壊れた(データベース作成スキーマで定義されている)文字が含まれていないことを確認したいと思います。文字列が壊れていて、そこにあるはずの文字の代わりに質問タグが含まれていることがすでに起こっているからです。私の場合、「Rückenschmerzen」ではなく「R��ckenschmerzen」と表示されていました。ドイツ語の文字「ü」が壊れていました。JUnitテストを介してそのようなエラーを見つけることは可能ですか?

どんな助けでもいただければ幸いです。前もって感謝します。ホラティウス

4

2 に答える 2

0

デフォルトでは、Charsetを使用するように構成されたMySqlデータベースlatin1ですが、my.ini

# The default character set that will be used when a new schema or table is
# created and no character set is defined
#default-character-set=latin1

default-character-set=utf8

照合はデフォルトで使用されますがutf8_general_ci、他にも照合があり、合計「650言語」がサポートされています。マニュアルを確認してください。

于 2012-11-08T16:03:07.817 に答える
0

@Roman:情報ありがとうございます、Roman。しかし、私は間違った質問をしたと思います。正しい質問は次のとおり です。文字列が有効なUTF-8形式(Javaを使用)であるかどうかを確認するにはどうすればよいですか?

データベースをUTF-8に設定してから、誤って別のエンコーディングの文字列の書き込み操作を行った場合でも、データベースは保存されると思います(最終的に不明な文字の代わりに置換コードU +FFFDを入力します)

したがって、私にとっての解決策は、データベース内の文字列にが含まれているかどうかを確認することですU+FFFD or �.

または、別の予防策は、データベースに保存する前に、文字列内の文字がすべてutf-8であることを確認することです。例:

    String myString = "blablabla";
    String finalStringToBeInserted = new String(myString.getBytes(), "UTF-8");
    saveToDatabase(finalStringToBeInserted);

よろしく、ホレス

于 2012-11-08T16:55:00.660 に答える