0

カード 4.0 の RFC から、vcard 4.0 は常に utf-8 であることを知りました。

http 経由で転送される export.vcf ファイルに連絡先をエクスポートするために ez-vcard を使用しています。

response.setContentType("text/vcard; charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
PrintWriter writer = response.getWriter();

VCardWriter vCardWriter = new VCardWriter(writer, VCardVersion.V4_0);

// add cards...

vCardWriter.close();

何だと思う?文字が正しくエンコードされていません。テキスト エディタでファイルを開くと、文字が乱れています。

何か助けはありますか?

4

1 に答える 1

1

以外に設定しているため、コンテンツ タイプで指定された文字エンコーディングを無視している可能性がありますtext/html

代わりにを使用して文字エンコーディングを設定してみてくださいsetCharacterEncoding()( を呼び出す前に必ず呼び出してくださいgetWriter())。

response.setContentType("text/vcard");
response.setCharacterEncoding("UTF-8");
response.setStatus(HttpServletResponse.SC_OK);
PrintWriter writer = response.getWriter();

また、テキスト エディタがファイルを正しく読み取っていることを確認してください。テスト中に、Eclipse が UTF-8 文字を正しく表示しないことがわかりました。これは、Eclipse が別の文字セットでファイルをロードするように構成されているためです。端末からファイルの内容を表示してみてください。

cat the-vcard-file.vcf

編集:VCardWriterもう1つ:オブジェクトを閉じないでください。PrintWriterこれにより、決して閉じてはならないサーブレットのオブジェクトが閉じられます!!

于 2013-09-03T13:28:39.097 に答える