1

Spring MVC ベースの Java Web アプリケーションがあります。日本語フォントで表示するデータがあります。オンラインで調べたところ、UTF-8 が必要な文字セット エンコーディングであることがわかりました。以下の行をアプリに追加しました。応答ヘッダーに文字セットエンコーディングを追加するだけです。

 response.setCharacterEncoding("UTF-8");

Windows 7 でテストすると、日本語フォントが正しく表示されます。

Unix ボックスで同じ war ファイルを実行したとき、これらの文字のみが表示されます: ��� および数字 (存在する場合) 。Chrome Debugger で応答ヘッダーを確認しましたが、UTF-8 エンコーディングが引き続き表示されます。

ヘッダー情報に見られる唯一の違いは、Windows には Apache-Coyote/1.1 のサーバーがあり、UNIX には Apache があることです。

他に何を確認する必要があるかを提案できますか?

4

1 に答える 1

2

問題は、文字列の作成方法にある可能性があります。ファイルから読み取られますか?

その場合、ファイル自体にエンコーディングがあり、デフォルトのプラットフォーム エンコーディングに従ってファイルを読み込んでいる可能性があります。ファイルがあるエンコーディングであるのに、別のエンコーディングで読み取る場合、文字列内のテキストは最初から正しくありません。

デバッグ/ロギングを使用した簡単なチェックは、文字列の長さです。Windows で 1 つの長さを報告し、Unix で別の長さを報告する場合、文字列の生成中にエンコード エラーが発生している可能性があります。たとえば、UTF-8 の文字が ISO-8859 として解釈された場合、次のように表示されます: -</p>

この場合、文字列の長さは 1 であると予想されますが、長さは 3 です。それが他のテキストに埋め込まれている場合、テキストが同じ。

于 2013-03-25T15:03:27.063 に答える