0

私は最近、Java と mysql を使って仕事をすることにうんざりしています。問題は、mysql データベースを持っていることです。1 つの表に、中国の都市名を示す列があります。ある同僚が、すべての文字 (接続、データベース、結果、サーバー、およびシステム) のデータベースを utf8 に変更しました。その結果、%character% を latin1 に戻した場合にのみ、変更前のデータが正しく表示されなくなりました。どちらの文字セットでも、データの半分しか正しく取得できません。問題を解決する方法を教えてください。問題を解決するためにJavaを使用しようとしましたが、うまくいきません。

String sql = "SELECT * FROM customer_addresses";
ResultSet result = query.executeQuery(sql);
while (result.next()) {
    byte b[] = result.getBytes("city");
    c = new String(result.getBytes("city"), "UTF-8");
}

For example: there is one city in db like this ä¹Œé²æœ¨é½å¸‚
the java print:  乌�?木�?市
it should be:乌鲁木齐市

前もって感謝します

4

2 に答える 2

0

データベースに接続する接続文字列に追加characterEncoding=UTF-8します。例えば:

"jdbc:mysql://servername:3306/databasename?characterEncoding=UTF-8"

ちなみに、データベースのデータが壊れているようです。データベースに乌鲁木齐市を保存する場合は、それがテーブルにある必要があり、ä¹Œé²æœ¨é½å¸ ではありません。

更新:データベースへのデータの格納方法に関する問題は、Java ではなく、データベース独自のツールを使用して簡単に解決できます。テキストを格納するテーブルごとに、次のようにします。

ALTER TABLE tablename CONVERT TO CHARACTER SET binary;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8;
于 2013-07-01T13:57:07.563 に答える
0

MySQL サーバーのデフォルトの文字セットはおそらく UTF8 ではありません。データベースからデータを取得する前に、次の SQL クエリを実行してみてください。

SET NAMES utf8

SET CHARACTER SET utf8
于 2013-07-01T13:38:42.963 に答える