2010-03-25 5 views
1

페이지 인코딩이 약간 튼튼한 MyFaces Facelets 애플리케이션이 있습니다. 어쨌든, 이클립스로 개발되었고 Ant로 빌드되었고, kindof는 Tomcat 2.0.26에서 잘 돌아 간다. 여태까지는 그런대로 잘됐다.1 바이트 UTF-8 시퀀스 중 올바르지 않은 바이트 1

이제는 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) 

함께 barfs, 응용 프로그램은 실제로 facelet 물건이없는 간단한 페이지를 실행합니다. 하지만, Ant로 대신 빌드하면 모든것이 실행됩니다 ... 그래서 내 질문입니다. Ant 빌드와 Maven 빌드간에 가장 큰 차이점은 무엇일까요?

Netbeans 및 pom-files에서 UTF-8을 구성했지만 Netbeans는 결국 일부 편집 후 Facelet 파일을 ISO-8859-1로보고하는 것으로 끝납니다.

대부분의 중앙 라이브러리가 동일한 버전 (특히 xerces 2.3.0)인지 확인 했으므로 효과가없는 인코딩 서블릿 필터를 추가했습니다.

그리고, 나는 차라리 빌드를 고치고 버그가있는 페이지를 유지하고 싶습니다. 다른 방법보다 ... 버블 페이지를 수정하지 않고 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> 
+0

* Netbeans 및 pom-files에서 UTF-8을 구성했지만 * POM에서 수행 한 작업을 표시 할 수 있습니까? –

+0

업데이트 된 질문보기. –

+0

좋아 보인다. 그러나 "전체를 보지 않고"는 아무 말도하지 않는 것 같습니다. 경우에 대비하여 http://72.5.124.102/thread.jspa?messageID=10633886을 확인하십시오. –

답변

1

저도 같은 문제가 없었다!

나는 다음과 같은 코드 조각을 사용하여 해결했다 :

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

이것은 좋은 해결책이 아닙니다. 이것은 UTF-8 바이트로 모호한 유효성 문자열을 인코딩 한 다음 시스템 인코딩을 사용하여이를 디코딩합니다.이 코드를 실행하는 시스템에 따라이 작업으로 인해 데이터가 손상되거나 전혀 수행되지 않을 수 있습니다. – McDowell

3

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException : 잘못된 바이트 1 바이트 UTF의를 -8 시퀀스.

이 원인은 UTF-8이 UTF-8로 구문 분석되지 않는 파일입니다. 파서가 FE - FF 범위의 바이트 값을 발견했을 수 있습니다. 이 값은 UTF-8 인코딩에서 유효하지 않습니다.

파일의 XML 선언을 올바른 인코딩으로 변경하거나 파일을 UTF-8로 다시 인코딩하면 문제가 해결 될 수 있습니다.

+0

동일한 문제가 있습니다 - 메모장에서 xml 파일을 열 때 ++는 파일이 "BOM없이 UTF-8"로 인코딩되었음을 나타냅니다. 나는 (메모장 + +를 사용하여) 파일을 "UTF-8"로 변환하려고 시도했다. 오류 메시지는 모두 동일하게 유지된다. 내 XML 선언은 다음과 같습니다. 그래서 내가 본 것처럼 인코딩이 선언과 일치하지만 여전히 위의 주어진 오류가 나타 납니까? 또는 나는 무엇인가 놓치고 있냐? – AgentKnopf

2

Windows에서 매우 쉽습니다. Notepad ++를 가지고 있지 않다면 "encoding"메뉴를 사용하여 인코딩을 변경하십시오.

관련 문제