ホームページ >データベース >mysql チュートリアル >JDBC 接続で「characterEncoding=utf-8」を設定しているにもかかわらず、MySQL データベースでキリル文字列が「????????」と表示されるのはなぜですか?
JDBC を使用して MySQL 用に UTF-8 文字列を正しくエンコードする方法
概要
JDBC を介して MySQL を操作する場合、データの整合性を確保し、文字の破損を避けるために UTF-8 文字列を適切にエンコードする方法を理解することが不可欠です。この記事では、MySQL でテキスト文字化けを引き起こす、間違った UTF-8 エンコーディングの一般的な問題について説明します。
問題ステートメント
JDBC を使用して MySQL テーブルに挿入された行が表示される文字が正しくない場合、「?????????」と表示されます。意図したキリル文字の代わりに。接続文字列に「characterEncoding=utf-8」を設定し、SQL ステートメントを実行して文字セットを設定したにもかかわらず、この問題は解決しませんでした。
MySQL 構成
問題を解決するには、MySQL 構成設定を確認することが重要です。次のコマンドを実行して、文字エンコードと照合順序の設定を確認します。
show variables like 'character%'; show variables like 'collation%';
JDBC 接続構成
JDBC 接続文字列に正しい文字エンコードと Unicode が含まれていることを確認します。 settings:
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myDatabase?useUnicode=true&characterEncoding=UTF-8","user","passwd");
文字セット管理用の SQL ステートメント
通常、文字セットとエンコーディングを明示的に設定するために SQL ステートメントを実行する必要はありません。デフォルトでは、MySQL は my.cnf または my.ini を通じて構成された設定を使用します。ただし、場合によっては、次のステートメントの実行が必要になることがあります。
<code class="sql">SET NAMES 'utf8'; SET CHARACTER SET 'utf8';</code>
データベース テーブル定義
データベース テーブルが正しい文字で定義されていることを確認してください。 set とエンコーディング:
<code class="sql">CREATE TABLE clt ( id bigint NOT NULL, text varchar(50) NOT NULL ) DEFAULT CHARACTER SET utf8;</code>
不要な SQL ステートメントの削除
提供されているサンプル コードでは、文字セットを設定するために SQL ステートメントを不必要に実行します。次のステートメントを削除すると、問題が解決します。
<code class="sql">query = "set character set utf8"; stat.execute(query);</code>
データベース側の構成
最後のステップとして、データベース側の構成が JDBC およびコードと一致していることを確認します。設定。これには、my.cnf または my.ini を変更して、適切なcharacter-set-server パラメータとcharacter-set-filesystem パラメータを設定することが含まれます。
これらのガイドラインに従うことで、MySQL での正確な UTF-8 文字列処理を保証できます。 JDBC を介してデータベースに接続し、テキスト化けを防ぎ、データの整合性を維持します。
以上がJDBC 接続で「characterEncoding=utf-8」を設定しているにもかかわらず、MySQL データベースでキリル文字列が「????????」と表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。