Reputation: 575
From the RFC for card 4.0 I learned that vcard 4.0 is always utf-8.
I am using ez-vcard to export contacts into a export.vcf file transferred via http:
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();
Guess what? Characters are not being encoded properly. If I open the file in a text editor, I see characters are messed up.
Any help?
Upvotes: 0
Views: 1812
Reputation: 35351
It may be ignoring the character encoding specified in the content type because you are setting it to something other than text/html
.
Try setting the character encoding using setCharacterEncoding()
instead (make sure to call it before calling getWriter()
).
response.setContentType("text/vcard");
response.setCharacterEncoding("UTF-8");
response.setStatus(HttpServletResponse.SC_OK);
PrintWriter writer = response.getWriter();
Also, make sure your text editor is reading the file correctly. During my testing, I found that Eclipse would not display UTF-8 characters correctly, because it was configured to load the file under a different character set. Try viewing the file contents from the terminal:
cat the-vcard-file.vcf
EDIT: One more thing: Do not close the VCardWriter
object. This will close the servlet's PrintWriter
object, which you must never close!!
Upvotes: 1