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