2012-12-07 48 views
0

我有一个WINDOWS-1252字符的文本文件,例如ø和ß。该文件通过表单提交到servlet进行上传,在那里使用opencsv进行解析,并将其作为List对象返回到显示它的jsp页面。 utf-8字符显示为?我试图找出编码可能出错的地方。 我已经尝试了一堆东西:显示WINDOWS-1252编码文本为html

  • 我的网页有标签<%@page contentType="text/html" pageEncoding="WINDOWS-1252"%>

  • 文件输入编码 - new FileInputStream(file), "WINDOWS-1252")

  • 每个字符串编码 - s = new String(s.getBytes("WINDOWS-1252"));

编码失败的地方?有任何想法吗?

回答

0

确定问题固定。 所以第一个问题是,它不是一个utf-8文件,而是一个WINDOWS-1252文件。我确定使用juniversalchardet库(非常有用和易于使用)。 然后我必须确保我是通过一个FileInputStream阅读与正确的字符集文件:

new FileInputStream(file), "WINDOWS-1252") 

的我不得不确保我与在JSP文件正确的字符集显示它使用标签<%@page contentType="text/html" pageEncoding="WINDOWS-1252"%>

这几乎是它 -

(1)确定的字符集

(2)确保你正在阅读的文件正确

(3)确保你的显示正确

1

一些故障诊断建议:

调试打印或以其他方式检查文本在不同阶段的十六进制,并验证编码真的是你希望它是什么。

确保没有BOM(字节顺序标记),看看这个问题,并在链接,如果有,你没有一个简单的方法来摆脱它:Reading UTF-8 - BOM marker

+0

确定我的坏tt在utf-8中没有解码,但在WINDOWS-1252中解码。用juniversalchardet来确定编码。 – levtatarov