java文件读取德语乱码

 今天在文件读取西欧国家的语言时,发现乱码,于是搜索了下,发现是编码格式的问题:

 

从维基百科中找到德语的乱码问题,上面这样说道:

乱码问题

由于德语的计算机编码为西欧语言,国际标准ISO-8859-1,所以在使用GB系列BIG5编码的中文系统(如常见的Windows系列)中用一些纯文本无法正确显示变音字符,必须将德文文字转换为Unicode编码才能在文字编辑工具中正常显示。特别是在使用默认GB2312的浏览器查看没有给出语言编码的德文网页时也会出现乱码。但在中文版的GNU/Linux中由于默认使用了UTF-8而避免了乱码。如果变音字符直接用GB系列或BIG5编码保存再次打开就会变成乱码。

 

德语譬如: Graubünden

 

于是代码段更改:

 

/**
 * format String Code
 * @param str
 * @return
 */
private String FormatStringCode(String str){

try {
str = new String(str.getBytes(), "ISO-8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

return str;
}

 

解决了这个问题,为了防止下次遇到其他特殊字符的编码问题,于是稍做整理了下:

 

ISO 8859系列字符集

ISO 8859系列字符集是欧洲计算机制造商协会(ECMA)在上世纪80年代中期设计,并被国际标准化(ISO)组织采纳为国际标准。ISO 8859系列字符集目前有15个字符集,包括:

  • ISO 8859-1 大部分的西欧语系,例如英文、法文、西班牙文和德文等(Latin-1
  • ISO 8859-2 大部分的中欧和东欧语系,例如捷克文、波兰文和匈牙利文等(Latin-2
  • ISO 8859-3 欧洲东南部和其它各种文字(Latin-3
  • ISO 8859-4 斯堪的那维亚和波罗的海语系(Latin-4
  • ISO 8859-5 拉丁文与斯拉夫文(俄文、保加利亚文等)
  • ISO 8859-6 拉丁文与阿拉伯文
  • ISO 8859-7 拉丁文与希腊文
  • ISO 8859-8 拉丁文与希伯来文
  • ISO 8859-9 为土耳其文修正的Latin-1Latin-5
  • ISO 8859-10 拉普人、北欧与爱斯基摩人的文字(Latin-6
  • ISO 8859-11 拉丁文与泰文
  • ISO 8859-13 波罗的海周边语系,例如拉脱维亚文等(Latin-7
  • ISO 8859-14 凯尔特文,例如盖尔文、威尔士文等(Latin-8
  • ISO 8859-15 改进的Latin-1,增加遗漏的法文、芬兰文字符和欧元符号(Latin-9
  • ISO 8859-16 罗马尼亚文(Latin-10

其中缺少的编号12据说是为了预留给天城体梵文字母(Deva-nagari)的。印地文和尼泊尔文都使用了这种在七世纪形成的字母表。由于印度定义了自己的编码ISCIIIndian Script Code for Information Interchange),所以这个编号就未被使用。ISO 8859系列字符集都是单字节字符集,即只使用0x00-0xFF对字符编码。

 

 

Thanks,

wengel

你可能感兴趣的:(java 德语 乱码)