字符编码

时间:2011-03-04 14:35:21

标签: java character-encoding

我得到了需要阅读和解析的html文件,这个文件可以是简单的英语,japenese,或者是该语言所需的相关字符编码的任何语言。使用任何这些编码的文件在Japenese中时会出现问题

  • Shift JIS
  • EUC-JP
  • ISO-2022-JP

我尝试用FileReader读取文件,但生成的文件都是垃圾字符。我也尝试使用FileInputStream,只需硬编码japenese编码来检查日文文件是否正确读取但结果不符合预期。

FileInputStream fis = new FileInputStream(htmlFile);
InputStreamReader isr = new InputStreamReader(fis, " ISO-2022-JP");

我对字符编码和国际化没有太多经验,有关如何使用不同编码读/写文件的任何建议?

还有一件事,我不知道如何获取我正在阅读的html文件的字符编码,我知道我需要以相同的编码编写文件,但不知道如何获取原始文件的编码 谢谢,

1 个答案:

答案 0 :(得分:4)

  • 忘记FileReader存在,它隐含地使用平台默认编码,这使得它几乎没用。
  • 使用硬编码编码的代码是正确的,但编码本身除外,它具有前导空格。如果删除它,代码应正确读取ISO-2022-JP编码文件
  • 至于获取HTML文件的字符编码,可以通过多种方式进行传输
    • Content-Type HTTP header的HTTP级别上 - 但这仅在您从网络服务器读取文件时可用,而不是在将其保存为文件时
    • 作为对应的META HTML tag<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
    • 或者,如果文档类型为XHTML,则in the XML declaration<?xml version="1.0" encoding="UTF-8"?>