0

我有一个带有 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"));

编码还能在哪里失败?有任何想法吗?

4

2 回答 2

1

一些故障排除建议:

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

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

于 2012-12-07T23:12:48.110 回答
1

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

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

我只需要确保我使用标签在 jsp 文件中使用正确的字符集显示它 <%@page contentType="text/html" pageEncoding="WINDOWS-1252"%>

差不多就是这样-

(1) 确定字符集

(2) 确保您正在正确读取文件

(3) 确保显示正确

于 2012-12-12T09:24:18.103 回答