如何在vcard文件中正确存储变音符号和重音符号?

时间:2013-09-03 09:12:23

标签: encoding utf-8 export vcard

从用于卡4.0的RFC中我了解到vcard 4.0始终是utf-8。

我正在使用ez-vcard将联系人导出到通过http传输的export.vcf文件中:

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();
猜猜是什么?字符未正确编码。如果我在文本编辑器中打开文件,我会看到字符混乱。

任何帮助?

1 个答案:

答案 0 :(得分: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字符,因为它被配置为在不同的字符集下加载文件。尝试从终端查看文件内容:

cat the-vcard-file.vcf

编辑:还有一件事:不要关闭VCardWriter对象。这将关闭servlet的PrintWriter对象,你永远不能关闭它!