JDBC が MySQL に接続して中国語を処理するときに文字化けする問題の解決方法の詳細説明

JDBC が MySQL に接続して中国語を処理するときに文字化けする問題の解決方法の詳細説明

JDBC が MySQL に接続して中国語を処理するときに文字化けする問題の解決方法の詳細説明

最近、統合プロジェクトは古いバージョンのMySQLサーバーに接続する必要があります。Navicatを使用して確認すると、このMySQLサーバーにはデフォルトのエンコードが設定されていないようで、このMySQLを操作するいくつかのPHPファイルからはgb2312エンコードを使用しているはずです。ただし、JDBC操作を直接使用すると、データベースから読み取られた中国語の文字がすべて文字化けします。

最初は、entity.setDepartName(new String(rs.getString("hg").getBytes("gbk"), "utf-8")); などのメソッドを使用してエンコーディング変換を強制しようとしましたが、どの方法を使用しても変換された文字は常に文字化けしてしまい、文字化けの仕方が毎回異なっていたため、失敗しました。かなり落ち込んでいます。さらに、このプロジェクトでは他の製品を使用しているため、フィルターなどの追加機能を追加することはできず、この問題に対処するのは簡単ではありません。

Navicat を使用して接続およびクエリを実行する際に問題は発生しなかったため、テーブルを SQL にエクスポートして、DDL にエンコード設定があるかどうかを確認してみました。エンコードがまったく記述されていなかったため、結果は残念なものでした。そこで、エクスポートした sql ファイルの拡張子を html に変更し、IE で開いてみると、文字化けしたコードはありませんでした。エンコード形式を確認すると、「gb2312」であることがわかりました。ただし、Java を使用して強制的にトランスコーディングしても効果はありませんでした。どうすればいいですか?

さらに、このプロジェクトは長年にわたって実行されており、事後のメンテナンスが不足しています。my.ini ファイルを表示および変更することはできません。

突然、MySQL に接続するときにパラメータを追加できることを思い出しました。一部のパラメータではエンコーディングを指定します。これで問題は解決できますか?

したがって、接続文字列 (元の値: url="jdbc:mysql://192.168.18.254:3306/web_oa) を次のように変更します。

url="jdbc:mysql://192.168.18.254:3306/web_oa?useUnicode=true&characterEncoding=gbk"

アプリケーションを再起動して確認すると、OKです。中国語は普通です。

問題は解決しました。

このメソッドは、接続時に実際に gbk エンコード形式を指定するため、クライアントとサーバーが独自のデフォルトのエンコード形式を使用して対話することがなくなります。構成が適切である限り、コードが文字化けする問題は発生しません。

ご質問がありましたら、メッセージを残すか、コミュニティに参加して話し合いましょう。お読みいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただき、ありがとうございます。

以下もご興味があるかもしれません:
  • PHP で文字化けした中国語の文字を MySQL に書き込むためのサンプル ソリューション
  • MySQL 文字セットの文字化けとその解決方法
  • Linux での MySQL の文字化け問題の解決方法
  • MySQL にテーブルデータを挿入するときに中国語の文字化けが発生する問題を解決する方法
  • JDBC 接続 mysql の文字化けしたコード例外問題の処理の概要
  • MySQL データベースにおける中国語文字化け問題の詳細な説明
  • MySQLデータベース移行におけるデータ文字化けの問題を解決する

<<:  Ubuntu 16.04 64 ビット版の VMware Tools のインストールと構成のグラフィック チュートリアル

>>:  React setStateデータ更新メカニズムの詳細な説明

推薦する

MySQL 4 データをインポートする方法

1. mysqlコマンドをインポートするmysql コマンドのインポート構文は次のとおりです。 my...

DockerとDocker-Composeの使用例

Docker は、アプリケーションをより速く配信するのに役立つオープンソースのコンテナ エンジンです...

GIFアニメーション効果を模倣した自動ビデオ再生を実現するWeChatアプレットの例

需要背景:ミニプログラムページに GIF ダイナミック画像を挿入しますが、GIF 画像は通常サイズが...

Linux で特定のプログラムを見つけるための whereis の例の詳細な説明

Linuxは特定のプログラムを見つけますwhereis コマンドは主にプログラム ファイルを検索し、...

CentOS サーバーの時間を北京時間に変更する方法

1. VPSとCentOSシステムを購入しましたが、サーバーの時間が北京時間と一致せず、時差があるこ...

HTMLの基礎知識:ウェブページの基礎知識

HTML は Hypertext Markup Language の略です。これは、実際のプレゼンテ...

MySql 5.7.17 winx64 のインストールと設定に関する詳細なチュートリアル

1. ソフトウェアをダウンロードする1. MySQL の公式サイトにアクセスし、Oracle アカウ...

ウェブデザインのためのオンライン開発ツール10選の紹介

1. オンラインテキストジェネレーターBlindTextGenerator: デザイナーにとって、こ...

MySQLでカンマ区切り値の列を列に変換する方法

序文場合によっては、第 1 正規形設計パターンに従わないビジネス テーブルに遭遇することがあります。...

ページングクリックコントロールを実装するネイティブJS

これは、ネイティブJSを使用してページングクリックコントロールを実装する必要がある面接の質問です。参...

Linuxのseqコマンドを使用して数字のシーケンスを生成します(推奨)

Linux の seq コマンドは、数字のリストを非常に高速に生成でき、使いやすく柔軟性に優れてい...

Linux ベースの MySQL マスター スレーブ構成の全プロセスを記録する

mysql マスタースレーブ構成1. 準備ホスト: 192.168.244.128スレーブ: 192...

MySQL 5.7.20 共通ダウンロード、インストール、設定方法と簡単な操作スキル(解凍版無料インストール)

早朝に MySQL 5.7.19 のインストールを終えたばかりですが、午前中に MySQL が最新バ...

JSはクリックドロップ効果を実装します

jsはクリックとドロップの特殊効果を実現します。まずは効果画像を見てみましょうさっそく始めましょう。...