動作環境はjboss+mssql
クエリを実行して、書式設定された結果をテキスト ファイルに出力しています。クエリ結果には、フランス語のアクセント文字が含まれています。
私のローカル マシンではすべて正常に動作しますが、UAT サーバー (Linux ボックス、UTF-8) では、フランス語のアクセント文字が疑問符になります。
誰もそれを解決する方法を知っていますか?
動作環境はjboss+mssql
クエリを実行して、書式設定された結果をテキスト ファイルに出力しています。クエリ結果には、フランス語のアクセント文字が含まれています。
私のローカル マシンではすべて正常に動作しますが、UAT サーバー (Linux ボックス、UTF-8) では、フランス語のアクセント文字が疑問符になります。
誰もそれを解決する方法を知っていますか?
ファイルの作成方法によって異なります。コード例が役立ちます。
を作成するときなど、エンコーディングを明示的に指定するとWriter
、ファイルを表示するマシンのロケールと一致しない場合、アクセント付きの文字の代わりに疑問符やプレースホルダー ボックスなどが表示されることがあります。コマンドを使用しlocale
てロケールを確認すると、関連する文字エンコーディングを知ることができます。これは、ファイルを表示するだけの問題です。ボックスは UTF-8 であると言いますが、アプリも UTF-8 ロケールで実行されていることを確認してください。ユーザー コンソールとサーバー アプリは異なるロケールを使用している可能性があります。
書き込み時に文字エンコーディングを指定しないと、ほとんどの場合、システムのロケールを使用することになります。その場合、必要な文字がこのロケールでサポートされていない可能性があるため、これらの文字はプレースホルダーに置き換えられます。LC_*
解決策は、対応する環境変数をエクスポートするなどして、アプリが実行されているロケールを変更することです。
したがって、短いチェックリストは次のようになります。
locale
コマンドの出力) は何ですか?od -t x1
するか、mc
. 疑問符は実際の疑問符 (16 進コード 3F) ですか、それとも他の文字ですか? 1 バイトの場合、おそらく Latin-N (ISO 8859-N) エンコーディングの 1 つです。1 バイト以上かかる場合は、おそらく UTF-8 です (a から z の文字は正常に見えるので、UTF-16 ではありません)。