1. Java 파일은 컴파일되어 클래스를 형성합니다
여기서 Java 파일의 인코딩은 다양할 수 있지만 Java 컴파일러는 Java 파일의 인코딩 형식에 따라 자동으로 이러한 인코딩을 읽고 클래스 파일을 생성합니다. . 여기에 있는 클래스 파일 인코딩은 유니코드 인코딩(구체적으로 UTF-16 인코딩)입니다.
그러므로 Java 코드에서 문자열을 정의합니다.
String s="중국어 문자";
Java 파일이 컴파일 전에 어떤 인코딩을 사용하든 관계없이 클래스로 컴파일한 후에는 동일합니다. --- -유니코드 인코딩 대표.
2. JVM에서의 인코딩
JVM은 클래스 파일을 로드하고 읽을 때 유니코드 인코딩을 사용하여 클래스 파일을 올바르게 읽습니다. 그러면 원래 정의된 문자열 s="중국어 문자"가 유니코드 인코딩으로 메모리에 표현됩니다.
String.getBytes()를 호출하면 실제로 문자 깨짐의 원인을 구매한 것입니다. 이 방법은 플랫폼의 기본 문자 집합을 사용하여 문자열에 해당하는 바이트 배열을 얻기 때문입니다. 중국어 버전의 Windows에서는 원리를 이해하지 못하면 쉽게 잘못된 코드가 발생합니다. 따라서 시스템에서는 문자열의 인코딩을 통일하는 것이 필요합니다. 이러한 통일을 막연히 외부 통일이라고 합니다. 예를 들어, 메소드 문자열 매개변수, IO 스트림, 중국 시스템에서는 GBK, GB13080, UTF-8, UTF-16 등을 사용할 수 있지만 사용할 수 있는 문자를 보장하려면 더 큰 문자 세트를 선택해야 합니다. 문자 깨짐 문제를 피하기 위해 모두 정상적으로 표시될 수 있습니다. (모든 파일에 ASCII 코드를 사용한다고 가정) 그러면 양방향 변환이 불가능합니다.
UTF-8은 모든 중국어 문자 세트 인코딩을 수용하지 않는다는 점에 유의해야 합니다. 따라서 특별한 상황에서는 UTF-8을 GB18030으로 변환할 때 왜곡된 문자가 나타날 수 있습니다. 이유를 설명하지 않고 중국어 시스템에서 UTF-8 인코딩 작업을 하고 있습니다. 가장 어리석은 점은 여러 사람이 하나의 시스템에서 작업한다는 것입니다. 어떤 사람은 소스 코드 파일에 GBK 인코딩을 사용하고, 어떤 사람은 UTF-8을 사용하고, 어떤 사람은 GB18030을 사용합니다. FK, 그들은 모두 중국인이고 아웃소싱 프로젝트가 아닙니다. 왜 UTF-8을 사용합니까? ANT 스크립트를 컴파일할 때 인식할 수 없는 문자 인코딩 프롬프트를 피하기 위해 모든 소스 코드에 GBK18030을 사용하는 것이 좋습니다.
따라서 중국 시스템의 경우 문자 왜곡을 최대한 방지하려면 GBK 또는 GB18030 인코딩을 선택하는 것이 가장 좋습니다(사실 GBK는 GB18030의 하위 집합입니다).
3. 메모리의 문자열 인코딩메모리의 문자열은 클래스 코드에서 직접 로드된 문자열로 제한될 뿐만 아니라 일부 문자열은 텍스트 파일에서 읽혀지고 일부는 구성될 수도 있습니다. 그러나 기본적으로 유니코드로 인코딩되지 않습니다. 이유는 간단합니다.
따라서 다양한 인코딩 문제를 처리하기 전에 "소스"의 인코딩을 명확하게 한 다음 지정된 인코딩 방법을 사용하여 메모리에 올바르게 읽어야 합니다. 메소드 매개변수인 경우 실제로 문자열 매개변수의 인코딩을 명확히 해야 합니다. 이 매개변수는 다른 일본어 시스템에서 전달될 수 있기 때문입니다. 문자열 인코딩이 명확하면 문자 왜곡을 방지하기 위해 필요에 따라 문자열을 올바르게 처리할 수 있습니다. 문자열을 디코딩하고 인코딩할 때 다음 메서드를 호출해야 합니다.
public class Test { public static void main(String[] args) { System.out.println("当前JRE:" + System.getProperty("java.version")); System.out.println("当前JVM的默认字符集:" + Charset.defaultCharset()); } }
위 내용은 Java 문자 인코딩 예제 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!