gpt4 book ai didi

java - 如何在使用 EZ-Vcard 编写的 Vcard 中包含字符集?

转载 作者:行者123 更新时间:2023-12-01 10:48:01 26 4
gpt4 key购买 nike

我正在使用 [EZ-VCards 库][1] 在 Java Web 应用程序中生成一些 VCard 数据。

除了编码问题之外,它工作正常并且使用起来非常简单。这些值是使用 UTF-8 编写的(我使用十六进制编辑器进行了检查),但 vcard 中未明确指定编码。

因此,当导入到客户端程序(例如 Outlook 或 OSX 中的联系人应用程序)时,重音字符会被错误表示。如果指定了字符集,则值将正确导入。

我得到了什么:

FN:André Müller

我想要什么:

FN;CHARSET=UTF-8:André Müller

如何使用 EZ-Vcard 添加此字符集信息?我阅读了文档(示例)和 JavaDoc API,但找不到执行此操作的方法。

编辑:Michael 的回答回答了我原来的问题,但不幸的是 Outlook 无法很好地处理 UTF-8。所以我需要用 ISO-8859-1 进行编码。我设法手动创建了一个 vcard 字符串,该字符串可以在 Outlook 和 Apple 联系人中正确运行和导入,如下所示:

N;CHARSET=ISO-8859-1:André;Müller;;; 
FN;CHARSET=ISO-8859-1:André Müller

在 Web Controller 级别,我确保返回的字符串确实采用 iso-8859-1 进行编码。

那么我如何使用 EZ-Vcard 实现这一目标?

最佳答案

尝试使用引用打印编码:

VCard vcard = new VCard();
FormattedName fn = vcard.setFormattedName("André Müller");
fn.getParameters().setEncoding(Encoding.QUOTED_PRINTABLE);
fn.getParameters().setCharset("ISO-8859-1");
vcard.write(System.out);

打印:

BEGIN:VCARD
VERSION:3.0
FN;ENCODING=quoted-printable;CHARSET=ISO-8859-1:Andr=E9 M=FCller
PRODID:ez-vcard 0.9.8
END:VCARD

请告诉我这是否有效!

关于java - 如何在使用 EZ-Vcard 编写的 Vcard 中包含字符集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34062710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com