まず、説明/解決策を探すのに多くの時間を費やしたと言いたいです。問題のヒントは見つかりましたが、特定の問題を解決する方法はありません。したがって、少なくともいくつかのケースで殴打されたように見えるトピックに関する投稿.
Mime ユーティリティによる適切なエンコード/デコードをテストする Java テスト クラスがあります。テストに使用される文字列はソース ファイルで宣言されており、入力文字列の処理後に assertEquals() を使用して等価性をテストします。次に例を示します。
String test = "S2, =?iso-8859-1?Q?F=E4ltstr=F6m?= =?iso-8859-1?Q?,_Patrik?= S3";
String expected = "S2, Fältström, PatrikS3";
私のエディター (および Notepad++ や UltraEdit などの他の外部エディター) では、windows-1252 または ISO-8859-1 エンコーディングとして読み取ることを選択した場合、入力文字列が適切に表示されます。UTF-8 では、予期される文字列が "F�ltstr�m" として表示されます。
コンパイルして Windows 7 マシンで実行すると、次の出力が得られます。
予想:S2、F�ltstr�m、PatrikS3
実際の :S2、Fältström、PatrikS3
この動作は、コマンド シェルとコード エディターで発生します。奇妙なことに、Windows XP マシンで動作します。それでも、コマンド シェルで chcp を使用してコードページを確認したところ、どちらの場合も同じ出力が得られました。これを機能させる唯一の方法は、「-encoding windows-1252」を使用してクラスをコンパイルすることですが、これはさまざまな理由で実行したくありません。
質問は次のとおりです。1) XP と Windows 7 の何が違い、これが失敗するのですか? デフォルトのプラットフォーム エンコーディングは変更されましたか? 2) Windows 7 マシンと Linux マシンの両方で動作するように修正するにはどうすればよいですか?
洞察に感謝します!