JAVA · 파일/IO
Charset과 인코딩
문자 인코딩 처리와 Charset API를 올바르게 사용합니다.
파일/IO중급CharsetUTF-8인코딩디코딩
핵심 설명
문자 인코딩 처리와 Charset API를 올바르게 사용합니다.
Java code
import java.nio.charset.*;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.util.Arrays;
public class CharsetDemo {
public static void main(String[] args) {
String text = "안녕하세요 Java!";
// 인코딩: String -> byte[]
byte[] utf8 = text.getBytes(StandardCharsets.UTF_8);
byte[] euckr = text.getBytes(Charset.forName("EUC-KR"));
System.out.println("UTF-8 바이트: " + utf8.length); // 19
System.out.println("EUC-KR 바이트: " + euckr.length); // 16
// 디코딩: byte[] -> String
String decoded = new String(utf8, StandardCharsets.UTF_8);
System.out.println(decoded);
// 잘못된 인코딩으로 디코딩
String broken = new String(utf8, StandardCharsets.ISO_8859_1);
System.out.println("깨진 문자: " + broken);
// CharsetEncoder/Decoder — 세밀한 제어
CharsetEncoder encoder = StandardCharsets.UTF_8.newEncoder()
.onMalformedInput(CodingErrorAction.REPLACE)
.onUnmappableCharacter(CodingErrorAction.REPLACE);
// 사용 가능한 Charset 확인
System.out.println("기본 Charset: " + Charset.defaultCharset());
System.out.println("UTF-8 지원: " +
Charset.isSupported("UTF-8"));
}
}학습 팁
항상 StandardCharsets.UTF_8을 명시적으로 지정하세요. 시스템 기본 인코딩에 의존하면 환경마다 결과가 달라집니다.
주의할 점
"한글".getBytes()는 시스템 기본 인코딩을 사용합니다. Windows에서는 EUC-KR, Linux에서는 UTF-8이 될 수 있어 이식성이 떨어집니다.
자주 묻는 질문
Charset과 인코딩란 무엇인가요?
문자 인코딩 처리와 Charset API를 올바르게 사용합니다.
Charset과 인코딩 학습 시 주의할 점은 무엇인가요?
"한글".getBytes() 는 시스템 기본 인코딩을 사용합니다. Windows에서는 EUC-KR, Linux에서는 UTF-8이 될 수 있어 이식성이 떨어집니다.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.