0

øやßのようなWINDOWS-1252文字のテキストファイルがあります。ファイルはフォーム送信を介してサーブレットにアップロードされ、opencsvで解析され、リストオブジェクトとしてjspページに返され、そこで表示されます。utf-8文字は?として表示されます そして、私は途中でエンコーディングがうまくいかなかったかもしれない場所を見つけようとしています。私はたくさんのものを試しました:

  • 私のページにはタグがあります<%@page contentType="text/html" pageEncoding="WINDOWS-1252"%>

  • ファイル入力はエンコードされています-new FileInputStream(file), "WINDOWS-1252")

  • すべての文字列がエンコードされます-s = new String(s.getBytes("WINDOWS-1252"));

他にどこでエンコーディングが失敗する可能性がありますか?何か案は?

4

2 に答える 2

1

OK問題は修正されました。したがって、最初の問題は、それが utf-8 ファイルではなく、WINDOWS-1252 ファイルであるということでした。juniversalchardet lib(非常に便利で使いやすい)を使用すると判断しました。次に、FileInputStream を使用して、正しい文字セットでファイルを読み取っていることを確認する必要がありました。

new FileInputStream(file), "WINDOWS-1252")

タグを使用してjspファイルに正しい文字セットで表示していることを確認する必要がありました <%@page contentType="text/html" pageEncoding="WINDOWS-1252"%>

それはほとんどそれです-

(1) 文字セットを決定する

(2)ファイルを正しく読んでいることを確認してください

(3) 正しく表示されていることを確認してください

于 2012-12-12T09:24:18.103 に答える
1

トラブルシューティングの提案:

印刷をデバッグするか、さまざまな段階でテキストを 16 進数として調べ、エンコーディングが実際に期待どおりであることを確認します。

BOM (バイト オーダー マーカー) がないことを確認し、ある場合はこの質問とリンクを参照してください。それを取り除く簡単な方法がない場合: UTF-8 の読み取り - BOM マーカー

于 2012-12-07T23:12:48.110 に答える