1

ウィキペディアのページを保存するためにmysqldbmsを使用しています。my.cnfファイルで次のディレクティブを使用して文字セットエンコーディングをutf-8(wikipediaエンコーディング)に設定しました。

[mysqld]
character_set_server = utf8

そして、'chararacter set utf8'プロパティ定義を使用してデータベースを作成しました。

また、mysqldクライアントのcharset-encodingを次のように変更しました。

  • 'charSet=utf8'jdbcドライバーを初期化するときにプロパティを挿入します。
  • クエリを実行する'set names utf8'

ただし、mysqlサーバーが一部の文字を他の文字に置き換えることに気づきました。

たとえば、。に置き換えáられaます。

アップデート

コマンドを実行して、とがshow variables like '%char%'両方であることを確認しました。character_set_clientcharacter_set_setutf8

正しい文字をデータベースに保存するにはどうすればよいですか?ありがとう!

4

1 に答える 1

2

DB URL でエンコーディングを指定してみてください:

url="jdbc:mysql://localhost:port/DBNAME?characterEncoding=UTF-8"

私の答えに関する詳細は次のとおりです。

以下は、MySQL のドキュメント ( http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-charsets.html ) からの抜粋です。

JDBC ドライバーからサーバーに送信されるすべての文字列は、ネイティブ Java Unicode 形式からクライアントの文字エンコーディングに自動的に変換されます。 setBytes()、setBinaryStream()、setAsciiStream()、setUnicodeStream()、および setBlob() を使用して設定されたパラメーターを除く、PreparedStatement および CallableStatement パラメーター。

文字エンコーディングの設定
クライアントとサーバー間の文字エンコーディングは、接続時に自動的に検出されます。サーバー バージョン 4.1.0 以降では、character_set_server を使用してサーバーでエンコーディングを指定します。ドライバーは、サーバーによって指定されたエンコーディングを自動的に使用します。クライアント側で自動的に検出されたエンコーディングをオーバーライドするには、サーバーへの接続に使用される URL で characterEncoding プロパティを使用します。クライアントから複数の文字セットを送信できるようにするには、デフォルトのサーバー文字セットとして utf8 を構成するか、 characterEncoding プロパティを介して UTF-8 を使用するように JDBC ドライバーを構成することにより、UTF-8 エンコーディングを使用します。

数か月前に同様の問題に遭遇しました。MySQL の character_set_server のデフォルト値を確認しました (「mysqld --verbose –help」コマンドを使用)。latin1でした。

于 2013-02-06T21:06:07.677 に答える