从用于卡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();
猜猜是什么?字符未正确编码。如果我在文本编辑器中打开文件,我会看到字符混乱。
任何帮助?
答案 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
对象,你永远不能关闭它!