Java 문자 인코딩 예제 분석
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









Java의 난수 생성기 안내. 여기서는 예제를 통해 Java의 함수와 예제를 통해 두 가지 다른 생성기에 대해 설명합니다.

자바의 암스트롱 번호 안내 여기에서는 일부 코드와 함께 Java의 Armstrong 번호에 대한 소개를 논의합니다.

Java의 Weka 가이드. 여기에서는 소개, weka java 사용 방법, 플랫폼 유형 및 장점을 예제와 함께 설명합니다.

Java의 Smith Number 가이드. 여기서는 정의, Java에서 스미스 번호를 확인하는 방법에 대해 논의합니다. 코드 구현의 예.

이 기사에서는 가장 많이 묻는 Java Spring 면접 질문과 자세한 답변을 보관했습니다. 그래야 면접에 합격할 수 있습니다.

Java 8은 스트림 API를 소개하여 데이터 컬렉션을 처리하는 강력하고 표현적인 방법을 제공합니다. 그러나 스트림을 사용할 때 일반적인 질문은 다음과 같은 것입니다. 기존 루프는 조기 중단 또는 반환을 허용하지만 스트림의 Foreach 메소드는이 방법을 직접 지원하지 않습니다. 이 기사는 이유를 설명하고 스트림 처리 시스템에서 조기 종료를 구현하기위한 대체 방법을 탐색합니다. 추가 읽기 : Java Stream API 개선 스트림 foreach를 이해하십시오 Foreach 메소드는 스트림의 각 요소에서 하나의 작업을 수행하는 터미널 작동입니다. 디자인 의도입니다
