1

我一直在研究执行以下操作的场景:

  1. 获取Unicode格式的输入数据;[UTF-8]
  2. 转换为 ISO-8559;
  3. 检测并替换不支持的字符进行编码;【基于用户自定义键值对】

我的问题是,我一直在尝试深入查找有关 ISO-8559 的信息,但还没有运气。有没有人碰巧知道更多这件事?这与 ISO-8859 有何不同?任何细节都会很有帮助。

其次,将 ISO-8559 要求放在一边,我继续编写程序,将传入的数据转换为 Java 中的 ISO-8859。虽然我能够使用基于字符的替换来实现所需的功能,但当数据量很大时,它显然似乎很耗时。[以 MB 为单位]

我相信一定有更好的方法来做到这一点。有人可以给我建议吗?

4

1 回答 1

2

我假设您想将 UTF-8 转换为 ISO-8859 -1,即 Western Latin-1。网上有很多字符集表。

  1. 一般来说,对于 Web 浏览器和 Windows,最好转换为Windows-1252,这是一个重新定义范围 0x80 - 0xBF 的扩展,还带有 MS Word 中的特殊引号。即使在 Mac 上,浏览器也能够以 ISO-559-1 格式解释这些代码。

  2. Java 标准转换之类new OutputStreamWriter(new FileOutputStream("..."), "Windows-1252")的已经很多了。您可以编写一种过滤器,也可以查找引入的?未翻译特殊字符。您可以将 Windows-1252 中没有重音的拉丁字母翻译为 ASCII 字母:

        String s = ...
        s = Normalizer.normalize(s, Normalizer.Form.NFD);
        return s = s.replaceAll("\\p{InCombiningDiacriticalMarks}", "");
    
  3. 对于印地语或西里尔语等其他脚本,要搜索的关键字是音译

于 2012-11-12T16:46:45.780 回答