Java 将文件中的WINDOWS-1252编码文本显示为html

Java 将文件中的WINDOWS-1252编码文本显示为html,java,utf,Java,Utf,我有一个WINDOWS-1252字符的文本文件,如ø和ß。该文件通过表单提交上传到servlet,在servlet中使用opencsv进行解析,并作为列表对象返回到显示该文件的jsp页面。 utf-8字符显示为?我试图找出编码过程中可能出现的错误。 我试过很多东西: 我的页面有标签 文件输入已编码-新文件输入流(文件),“WINDOWS-1252”) 每个字符串都经过编码-s=新字符串(s.getBytes(“WINDOWS-1252”) 编码还能在哪里失败?有什么想法吗?一些故障排除建议:

我有一个WINDOWS-1252字符的文本文件,如ø和ß。该文件通过表单提交上传到servlet,在servlet中使用opencsv进行解析,并作为列表对象返回到显示该文件的jsp页面。 utf-8字符显示为?我试图找出编码过程中可能出现的错误。 我试过很多东西:

  • 我的页面有标签

  • 文件输入已编码-
    新文件输入流(文件),“WINDOWS-1252”)

  • 每个字符串都经过编码-
    s=新字符串(s.getBytes(“WINDOWS-1252”)


编码还能在哪里失败?有什么想法吗?

一些故障排除建议:

调试打印或在不同阶段以十六进制形式检查文本,并验证编码是否真的是您所期望的

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

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

new FileInputStream(file), "WINDOWS-1252")
我只需要确保在jsp文件中使用标记

差不多就是这样-

(1) 确定字符集

(2) 确保你读的文件是正确的


(3) 确保显示正确

ok我的坏tt没有在utf-8中解码,而是在WINDOWS-1252中解码。使用juniversalchardet确定编码。