在Windows中运行时出现问题

时间:2011-12-10 14:31:40

标签: java char

我有一小段代码,旨在用无重音字母代替重音字母。

protected String sinAcentos(String str) {

    // Cadena de caracteres original a sustituir.
    String original = "áàäéèëíìïóòöúùuñÁÀÄÉÈËÍÌÏÓÒÖÚÙÜÑçÇ";
    // Cadena de caracteres ASCII que reemplazarán los originales.
    String ascii = "aaaeeeiiiooouuunAAAEEEIIIOOOUUUNcC";

    String tmp = str;
    for (int i=0; i<original.length(); i++) {
        // Reemplazamos los caracteres especiales.
        tmp = tmp.replace(original.charAt(i), ascii.charAt(i));
    }//for i
    return tmp;
}

当我在IDE(eclipse)中运行此函数时,没有错误。 但随后我导出了一个可创建的可执行产品,该产品可在Windows 7和Windows XP上运行。

当函数运行时发生错误且文本为:

  

指数超出范围:34

所以,34是原始字符串变量的长度。因此循环应该在0到33之间循环,因为循环条件:i < original.lenght() ...

我更改了代码,在替换行添加了try ... catch,这就是现在的工作方式。

知道代码中有什么问题吗?

1 个答案:

答案 0 :(得分:3)

请检查Java源文件的编码,并检查用于两个字符串的字符集。

这些之间可能存在不匹配,某些编码需要比其他编码更多的字节(例如,请考虑UTF-8与ISO-8859-1)。

确保您的Java源文件使用的是UTF-8而不是ISO-8859-1或特定于Windows的编码,如CP-1252。