1

私は MyFaces Facelets アプリケーションを持っていますが、ページのコーディングは少し荒いです。とにかく、これは Eclipse で開発され、Ant でビルドされており、Tomcat 2.0.26 で問題なく動作します。ここまでは順調ですね。

さて、Maven でビルドしたいので、いくつかの pom ファイルを作成し、それらを Netbeans で開いてビルドしました。これで、正常にデプロイされる war ファイルができました。ただし、任意の facelet ページでは、

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)

それで、私はさまざまなことを試しましたが、アプリケーションは実際にfaceletのものなしで単純なページを実行しました. しかし、代わりに Ant でビルドするだけですべてが実行されます...だから私の質問は、これを引き起こす可能性のある ant ビルドと maven ビルドの最も可能性の高い違いは何ですか?

また、Netbeans と pom ファイルで UTF-8 用に構成したにもかかわらず、Netbeans は最終的に facelet ファイルを編集後に 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>
4

3 に答える 3

3

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 バイト UTF-8 シーケンスのバイト 1 が無効です。

これの原因は、 UTF-8ではないファイルがUTF-8として解析されていることです。パーサーが範囲内のバイト値に遭遇している可能性がありますFE- FF。これらの値は、UTF-8 エンコーディングでは無効です。

この問題は、ファイルの XML 宣言を正しいエンコーディングに変更するか、ファイルを UTF-8 に再エンコードすることで解決できる可能性があります。

于 2010-07-07T19:17:24.780 に答える
2

Windows では非常に簡単です。持っていない場合は Notepad++ を入手し、「エンコード」メニューを使用してエンコードを変更します。

于 2012-10-24T20:54:59.850 に答える
1

私は同じ問題を抱えていました!

次のコードを使用して解決しました。

String str = new String(oldstring.getBytes("UTF-8"));
于 2010-07-07T19:04:03.273 に答える