char При выпуске в Windows - PullRequest
       2

char При выпуске в Windows

0 голосов
/ 10 декабря 2011

У меня есть небольшой фрагмент кода, цель которого заменить букву с акцентом на буквы без акцента.

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 - длина исходной строковой переменной.следовательно, петля плеча петля i между 0 и 33, потому что условие цикла: i < original.lenght() ...

Я изменяю код, добавляя try ... catch в строке замены, и вот как это работает сейчас.

Есть идеи, что не так в коде?

1 Ответ

3 голосов
/ 10 декабря 2011

Пожалуйста, проверьте кодировку вашего исходного файла Java, а также проверьте кодировку, используемую для обеих строк.

Возможно, имеется несоответствие между этими и некоторыми кодировками, требующими больше байтов, чем другими, для специальных символов (например, UTF-8 против ISO-8859-1).

Убедитесь, что ваш исходный файл Java использует UTF-8, а не ISO-8859-1 или специфичную для Windows кодировку, например CP-1252.

...