【问题标题】:How to properly store umlauts and accents in vcard file?如何在 vcard 文件中正确存储变音符号和重音符号?
【发布时间】:2013-09-03 09:12:22
【问题描述】:

从卡 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();

你猜怎么着?字符编码不正确。如果我在文本编辑器中打开文件,我会看到字符混乱。

有什么帮助吗?

【问题讨论】:

    标签: encoding utf-8 export vcf-vcard


    【解决方案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 对象,您绝对不能关闭它!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-08
      • 2017-08-09
      • 2019-12-08
      • 1970-01-01
      • 2014-01-04
      • 2010-12-16
      • 1970-01-01
      • 2022-01-03
      相关资源
      最近更新 更多