Java 言語の文字化けの原因と解決策
a) awt (swing) ベースのグラフィカル インターフェイス プログラムで中国語が文字化けして表示される
awt (swing) ベースのグラフィカル インターフェイス プログラムでは、メニューの中国語表示が文字化けします。一般に、その理由は、JVM が中国語の表示に使用されるフォントを見つけられないためです。JVM には中国語がありません。元のインストールのフォントと、Linux のディストリビューション バージョンが異なり、フォントのパスと名前も異なるため、JVM は通常、Linux オペレーティング システムに含まれるフォントを見つけることができません。解決策は、JVM が次のことをできるようにすることです。 Linux オペレーティング システムに含まれるフォントを検索します。Redflag 6.0 などに付属するフォント ライブラリは、次のコマンドで解決できます:
mkdir /usr/java/jdk1.6.0/jre/lib/fonts/fallback ln -s /usr/share/fonts/chinese/TrueType/*.ttf /usr/java/jdk1.6.0/jre/lib/fonts/fallback
通常、フォント構成を変更する必要はありません。 JRE/lib/ ディレクトリ内のファイル (fontconfig.OS.Version.properties)。
b) B/S 構造 JSP (サーブレット) に基づいたシステム クライアント ブラウザで中国語が文字化けして表示される
ページ内の中国語が文字化けして表示される
静的コンテンツの場合HTML ファイルと同様に、ファイルの文字セットは、 の場所に設定されている文字セットと同じである必要があるだけです。ファイル。
JSP やサーブレットなどの動的ファイルの場合、コンパイルが必要です。動作中に、JVM はクラス ファイルを解釈して、クライアントのブラウザが必要とする HTML ファイルを生成します。中国語の文字化けが発生する場合は、通常、コンパイルされて実行され、プロセス中に生成されます。商用 Linux ディストリビューションおよびサーバーを使用する場合、通常は JSP またはサーブレット ファイルを UTF-8 文字セットとして保存し、 UTF-8 に設定するだけです。それでも文字化けが発生する場合は、以下の方法で解決できます。
① サーバーが独自に開発されている場合は、ソースコードを変更して、ファイルの読み取り、ファイルの書き込み、HTML ファイルの生成を JVM に指定することができます。クライアント ブラウザに必要な、文字列とバイナリ シーケンス ストリームを変換するときのエンコード方式を使用することで、問題を根本的に解決し、サーバーの適応性を高めました。MyWebServer 2.0 では、この方式を採用しました。コードは次のとおりです。
new BufferedReader(new InputStreamReader(new FileInputStream(jspfile),”GBK”)); new PrintWriter(serfile,”GBK”); new PrintWriter(new OutputStreamWriter(os,”GBK”));
結論
Linux での中国語表示で Java 言語によって生成される文字化けは、主に JVM のフォント ライブラリ、オペレーティング システムのロケール設定、 JVM のデフォルトのロケール設定とアプリケーション 文字列変換の文字セットには、JVM のロケール設定とアプリケーションで直接指定するバイナリ シーケンス ストリームが関係します。これは、バイナリ シーケンス ストリームと文字列の相互変換プロセスで使用される文字エンコード方式が異なるか、JVM が必要なフォントを見つけられないことが原因です。これを解決するには、さまざまな方法を使用できます。使用する具体的な方法は、特定の処理によって異なります。 . アプリケーション環境。
推奨: [Linux ビデオ チュートリアル
]以上がLinux環境でJavaコードが文字化けするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。