Подтвердить что ты не робот

Что означает сообщение "Недопустимый байт 2 из 3-байтовой последовательности UTF-8"?

Я изменил файл в Orbeon Forms, и в следующий раз, когда загружу страницу, я получаю сообщение об ошибке "Недействительный байт 2 3-байтовой последовательности UTF-8". Как я могу решить эту проблему?

4b9b3361

Ответ 1

Это происходит, когда Orbeon Forms читает XML файл и ожидает, что он будет использовать кодировку UTF-8, но каким-то образом файл неправильно кодируется в UTF-8. Чтобы решить эту проблему, убедитесь, что:

  • У вас есть объявление XML в начале файла, в котором говорится, что файл находится в UTF-8:

    <?xml version="1.0" encoding="UTF-8" ?>
    
  • Ваш редактор поддерживает XML, поэтому он может анализировать декларацию XML и, следовательно, использовать кодировку UTF-8. Если ваш редактор не известен XML, и вы не хотите использовать другой редактор, найдите вариант или предпочтение, позволяющее указать, что редактор должен использовать UTF-8.

Ответ 2

Трехбайтная последовательность UTF-8 выглядит так:

1110xxxx 10xxxxxx 10xxxxxx

Ваше сообщение об ошибке может означать, что первый байт из трех неверно помещает начало трехбайтовой последовательности или же что второй байт неверен.

Как сообщает @avernet, вы должны убедиться, что все элементы в вашей системе производят и ожидают UTF-8.

Ответ 3

Когда вы запускаете свою программу, используйте следующий аргумент командной строки Java:

-Dfile.encoding=UTF-8

Например,

java -Dfile.encoding=UTF-8 -jar foo.jar

Ответ 4

У меня такая же проблема в Eclipse, я просто попытался изменить тип файла.

Щелкните правой кнопкой мыши файл → Ресурс → Текстовое кодирование (UTF-8)

Это решение сработало для меня.

Спасибо.

Ответ 5

Я использую Eclipse, и мне также пришлось изменить кодировку текстового файла в:

- > Windows- > Настройки- > Рабочее пространство

Тогда он работал нормально.

Спасибо

Ответ 6

Вам может потребоваться настроить Tomcat со следующим параметром:

-Dfile.encoding = UTF-8

Ответ 7

Была такая же проблема.

Проблема > Я получаю значения сертификата X509 (несколько источников кодирования) для создания отчета в формате PDF. PDF создается через веб-сервис, ожидающий запроса XML-запроса UTF-8, и я должен перекодировать значения перед сортировкой.

Решение > http://fabioangelini.wordpress.com/2011/08/04/converting-java-string-fromto-utf-8/

Используя этот класс:

public class StringHelper {

// convert from UTF-8 -> internal Java String format
public static String convertFromUTF8(String s) {
    String out = null;
    try {
        out = new String(s.getBytes("ISO-8859-1"), "UTF-8");
    } catch (java.io.UnsupportedEncodingException e) {
        return null;
    }
    return out;
}

// convert from internal Java String format -> UTF-8
public static String convertToUTF8(String s) {
    String out = null;
    try {
        out = new String(s.getBytes("UTF-8"), "ISO-8859-1");
    } catch (java.io.UnsupportedEncodingException e) {
        return null;
    }
    return out;
}
}

Использование:

//getSummaryAttMap() returns a HashMap
String value = (String) getSummaryAttMap().get(key);
if(value != null)
value = StringHelper.convertToUTF8(value);
else
value = "";

Ответ 8

Я предоставлю специальный код. Когда вы проверяете xml файл и нет ничего плохого, и вы используете Java и запускаете Tomcat Server. Ваш исходный код может игнорировать указание самой кодировки, и, таким образом, JVM использует кодировку по умолчанию при чтении в содержимом xml в виде строки или что-то еще, что представляет строку, которая, в свою очередь, относится к кодировке по умолчанию Tomcat. Если кодировка xml и Tomcat несовместима, она также может сообщать о том же сообщении об ошибке.