program tip

Java의 "인코딩에 매핑 할 수없는 문자"경고

radiobox 2020. 8. 11. 08:14
반응형

Java의 "인코딩에 매핑 할 수없는 문자"경고


현재 컴파일 할 때 다음 경고를 표시하는 Java 프로젝트에서 작업 중입니다.

/src/com/myco/apps/AppDBCore.java:439: warning: unmappable character for encoding UTF8
    [javac]         String copyright = "� 2003-2008 My Company. All rights reserved.";

날짜 이전에 SO가 어떻게 문자를 렌더링할지 모르겠지만 저작권 기호 여야하며 경고에 다이아몬드 물음표로 표시되어야합니다.

문자가 출력 아티팩트에 올바르게 표시되지만 경고는 성가신 것이며 언젠가 인코딩을 잘못 저장하는 텍스트 편집기가이 클래스를 포함하는 파일을 건드릴 수 있습니다.

이 문자를 "저작권"문자열에 삽입하여 컴파일러가 만족하고 기호가 잠재적 인 재 인코딩 문제없이 파일에 보존되도록하려면 어떻게해야합니까?


"\ uxxxx"이스케이프 형식을 사용하십시오.

Wikipedia 에 따르면 저작권 기호는 유니 코드 U + 00A9이므로 행은 다음과 같아야합니다.

String copyright = "\u00a9 2003-2008 My Company. All rights reserved.";

시도해보십시오 : javac -encoding ISO-8859-1 file_name.java


Maven을 사용하는 <encoding>경우 컴파일러 플러그인의 구성에서 명시 적으로 설정하십시오.

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>

이것은 나를 위해 도움이되었습니다.

해야 할 일은 JAVA_TOOL_OPTIONS라는 환경 변수를 지정하는 것입니다. 이 변수를 -Dfile.encoding = UTF8로 설정하면 JVM이 시작될 때마다이 정보가 선택됩니다.

출처 : http://whatiscomingtomyhead.wordpress.com/2012/01/02/get-rid-of-unmappable-character-for-encoding-cp1252-once-and-for-all/


이 줄을 Java conf 위의 yor 파일 .gradle에 넣으십시오.

apply plugin: 'java'
compileJava {options.encoding = "UTF-8"}   

대부분의 경우이 컴파일 오류는 유니 코드 (UTF-8 인코딩) 파일을 컴파일 할 때 발생합니다.

javac -encoding UTF-8 HelloWorld.java

또한이 컴파일 옵션을 IDE에 추가 ​​할 수 있습니다. 예 : Intellij idea
(File> settings> Java Compiler) add as additional command line parameter

여기에 이미지 설명 입력

-encoding : encoding EUC-JP 및 UTF-8과 같은 소스 파일 인코딩 이름을 설정합니다. -encoding이 지정되지 않은 경우 플랫폼 기본 변환기가 사용됩니다. ( DOC )


Gradle 단계

Gradle을 사용하는 경우 Java 플러그인을 적용하는 줄을 찾을 수 있습니다.

apply plugin: 'java'

그런 다음 컴파일 작업의 인코딩을 UTF-8로 설정합니다.

compileJava {options.encoding = "UTF-8"}   

단위 테스트가 있다면 UTF-8로도 컴파일하고 싶을 것입니다.

compileTestJava {options.encoding = "UTF-8"}

전체 Gradle 예제

이것은 전체 gradle 코드가 다음과 같이 보일 것임을 의미합니다.

apply plugin: 'java'
compileJava {options.encoding = "UTF-8"}
compileTestJava {options.encoding = "UTF-8"}

이것은 나를 위해 일했습니다-

    <?xml version="1.0" encoding="utf-8" ?>
<project name="test" default="compile">
    <target name="compile">
        <javac srcdir="src" destdir="classes" 
                           encoding="iso-8859-1" debug="true" />
    </target>
</project>

If you use eclipse (Eclipse can put utf8 code for you even you write utf8 character. You will see normal utf8 character when you programming but background will be utf8 code) ;

  1. Select Project
  2. Right click and select Properties
  3. Select Resource on Resource Panel(Top of right menu which opened after 2.)
  4. You can see in Resource Panel, Text File Encoding, select other which you want

P.S : this will ok if you static value in code. For Example String test = "İİİİİııııııççççç";


Java 오류 메시지에보고 된 문자 색인이 잘못된 동일한 문제가 발생했습니다. 보고 된 위치가 16 진수 022 대신 16 진수 094 (인용문 대신 취소되지만 따옴표로 표시됨) 직전에 큰 따옴표 문자로 범위를 좁혔습니다. 16 진수 022 변형으로 바꾸 자마자 모두 괜찮 았습니다.


명령 프롬프트에서 Maven Build를 사용하는 경우 다음 명령도 사용할 수 있습니다.

                    mvn -Dproject.build.sourceEncoding=UTF-8

참고 URL : https://stackoverflow.com/questions/464874/unmappable-character-for-encoding-warning-in-java

반응형