Неверный байт 1 1-байтовой последовательности UTF-8 - PullRequest
1 голос
/ 25 марта 2010

У меня есть приложение MyFaces Facelets, где кодирование страницы немного надёжно. Во всяком случае, он разработан с Eclipse и построен с Ant, и вроде бы хорошо работает в Tomcat 2.0.26. Пока все хорошо.

Теперь я предпочел бы собрать с Maven, поэтому я сделал пару pom-файлов, открыл их в Netbeans и собрал, и теперь у меня есть файл войны, который разворачивается нормально. Тем не менее, на любой странице лицевого нюна она выводит

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.
        at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:684)
        at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:554)
        at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1742)

Итак, я пробовал много разных вещей, и приложение на самом деле запускает простые страницы без использования лицевых частей. Но все работает, если я просто собираюсь с Ant вместо ... Итак, мой вопрос: какова наиболее вероятная разница между сборкой ant и сборкой maven, которая может вызвать это?

Также кажется, что, несмотря на то, что я настроил UTF-8 в Netbeans и pom-файлах, NetBeans в конце концов заканчивает тем, что после некоторого редактирования сообщает о файлах лицевого щита как ISO-8859-1.

Я убедился, что большинство центральных библиотек имеют одинаковую версию (особенно xerces 2.3.0), я добавил фильтр сервлетов кодирования, который не дал эффекта.

И я бы скорее исправил сборку maven и сохранил страницы с ошибками, чем наоборот ... я собираюсь представить Naven, а не исправлять страницы с ошибками.

Вот что pom.xml говорит о кодировке:

В основном pom.xml имеет следующий набор ...

 <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <encoding>${project.build.sourceEncoding}</encoding>>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>

....

    <properties>
        <netbeans.hint.deploy.server>Tomcat60</netbeans.hint.deploy.server>
        <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
    </properties>

Ответы [ 3 ]

3 голосов
/ 07 июля 2010

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: недопустимый байт 1 из 1-байтовой последовательности UTF-8.

Причиной этого является файл, который не UTF-8 анализируется как UTF-8. Вероятно, синтаксический анализатор обнаружил байтовое значение в диапазоне FE - FF. Эти значения недопустимы в кодировке UTF-8.

Возможно, эту проблему можно решить, изменив XML-декларацию файла на правильную кодировку или перекодировав файл в UTF-8.

2 голосов
/ 25 октября 2012

В Windows это очень просто.Получите Notepad ++, если у вас его нет, и измените кодировку с помощью меню «кодировка».

1 голос
/ 07 июля 2010

У меня была такая же проблема!

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

String str = new String(oldstring.getBytes("UTF-8"));
...