Encoding 如何在vcard文件中正确存储umlauts和重音符号?
从卡4.0的RFC中,我了解到vcard 4.0始终是utf-8 我正在使用ez vcard将联系人导出到通过http传输的export.vcf文件中:Encoding 如何在vcard文件中正确存储umlauts和重音符号?,encoding,utf-8,export,vcf-vcard,Encoding,Utf 8,Export,Vcf 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 = ne
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();
你猜怎么着?字符编码不正确。如果我在文本编辑器中打开文件,我会看到字符被弄乱了
有什么帮助吗?它可能会忽略内容类型中指定的字符编码,因为您将其设置为除
text/html
以外的其他内容
尝试使用setCharacterEncoding()
设置字符编码(请确保在调用getWriter()
之前调用它)
另外,确保文本编辑器正确读取文件。在测试期间,我发现Eclipse无法正确显示UTF-8字符,因为它被配置为在不同的字符集下加载文件。尝试从终端查看文件内容:
cat对vcard文件.vcf进行编辑
编辑:还有一件事:不要关闭VCardWriter
对象。这将关闭servlet的PrintWriter
对象,您永远不能关闭它
response.setContentType("text/vcard");
response.setCharacterEncoding("UTF-8");
response.setStatus(HttpServletResponse.SC_OK);
PrintWriter writer = response.getWriter();