从文件中以html格式显示WINDOWS-1252编码文本

时间:2012-12-07 23:03:10

标签: java utf

我有一个文本文件,其中包含ø和ß等WINDOWS-1252字符。该文件通过表单提交上传到servlet,在那里用opencsv解析并作为List对象返回到显示它的jsp页面。 utf-8字符显示为?我试图找出编码可能出错的方式。 我尝试了很多东西:

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

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

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

编码失败的其他地方?任何想法?

2 个答案:

答案 0 :(得分:1)

一些故障排除建议:

在各个阶段调试打印或以其他方式检查文本为十六进制,并验证编码确实是您期望的。

确保没有BOM(字节顺序标记),并查看此问题及其中的链接(如果有)并且您没有简单的方法可以摆脱它:Reading UTF-8 - BOM marker

答案 1 :(得分:0)

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

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

我只需要确保使用标记<%@page contentType="text/html" pageEncoding="WINDOWS-1252"%>

在jsp文件中使用正确的字符集显示它

这就是它 -

(1)确定charset

(2)确保你正确地阅读文件

(3)确保你正确显示