🔖 INDEX
ISO-8859-1 (ISO Latin-1)
ISO-8859-1(Latin-1)은 서유럽 언어에 사용되는 문자들을 포함한 8비트 인코딩 방식입니다. 이 인코딩 방식은 256개의 문자를 표현할 수 있으며, 그 중 128개는 ASCII 문자와 동일합니다. 나머지 128개의 문자는 서유럽 언어(예: 프랑스어, 독일어, 스페인어 등)에서 사용되는 특수 문자, 악센트가 붙은 문자, 기호 등을 포함합니다.
ISO-8859-1 인코딩의 특징
- 8비트 인코딩으로 문자당 1바이트로 표현할 수 있습니다.
- 영어와 서유럽 언어를 효율적으로 표현할 수 있지만, 다른 언어의 문자를 표현하기에는 부족합니다.
- ASCII 문자와 호환되어 처리 속도가 빠릅니다.
ISO-8859-1 사용 예제
간단한 자바 예제 코드를 통해 ISO-8859-1 문자의 인코딩을 살펴보겠습니다.
import java.io.UnsupportedEncodingException;
public class Iso8859Example {
public static void main(String[] args) {
String text = "Bonjour, le monde!";
try {
// 문자열을 ISO-8859-1 바이트 배열로 변환
byte[] iso8859Bytes = text.getBytes("ISO-8859-1");
System.out.println("ISO-8859-1로 인코딩된 바이트 배열: ");
for (byte b : iso8859Bytes) {
System.out.print(b + " ");
}
System.out.println();
// ISO-8859-1 바이트 배열을 문자열로 변환
String decodedText = new String(iso8859Bytes, "ISO-8859-1");
System.out.println("ISO-8859-1 바이트 배열을 문자열로 변환: " + decodedText);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
실행 결과 :
ISO-8859-1로 인코딩된 바이트 배열:
66 111 110 106 111 117 114 44 32 108 101 32 109 111 110 100 101 33
ISO-8859-1 바이트 배열을 문자열로 변환: Bonjour, le monde!
위 예제에서는 주어진 문자열을 ISO-8859-1 바이트 배열로 변환한 후, 다시 문자열로 복원하는 과정을 보여줍니다. 이처럼 ISO-8859-1 인코딩은 영어와 서유럽 언어의 문자를 효율적으로 표현할 수 있지만, 다양한 언어를 표현하기에는 한계가 있습니다. 따라서 다국어를 지원해야 하는 경우에는 UTF-8이 보다 적합합니다.
EUC-KR
EUC-KR(Extended Unix Code for Korean)은 한글을 비롯한 한국어 문자를 표현하기 위해 사용되는 인코딩 방식입니다. EUC-KR은 영어와 숫자를 표현하는 ASCII 문자와 한글, 한자, 일본어 등의 문자를 표현하는 2바이트 문자로 구성됩니다.
EUC-KR 인코딩의 특징
- 2바이트 인코딩 방식으로, 한글을 비롯한 한국어 문자를 표현할 수 있습니다.
- 영어와 숫자를 표현하는 ASCII 문자도 지원합니다.
- EUC-KR은 한국어 사용자가 많은 환경에서 사용되어 왔지만, 현재는 UTF-8과 같은 유니코드 기반의 인코딩 방식이 대세입니다.
EUC-KR 사용 예제
간단한 자바 예제 코드를 통해 EUC-KR 문자의 인코딩을 살펴보겠습니다.
import java.io.UnsupportedEncodingException;
public class EucKrExample {
public static void main(String[] args) {
String text = "안녕하세요, 세상!";
try {
// 문자열을 EUC-KR 바이트 배열로 변환
byte[] eucKrBytes = text.getBytes("EUC-KR");
System.out.println("EUC-KR로 인코딩된 바이트 배열: ");
for (byte b : eucKrBytes) {
System.out.print(b + " ");
}
System.out.println();
// EUC-KR 바이트 배열을 문자열로 변환
String decodedText = new String(eucKrBytes, "EUC-KR");
System.out.println("EUC-KR 바이트 배열을 문자열로 변환: " + decodedText);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
실행 결과 :
EUC-KR로 인코딩된 바이트 배열:
-80 -84 -75 -77 -90 -84 -43 -84, 32 -81 -45 -76 -93 -44 33
EUC-KR 바이트 배열을 문자열로 변환: 안녕하세요, 세상!
위 예제에서는 주어진 문자열을 EUC-KR 바이트 배열로 변환한 후, 다시 문자열로 복원하는 과정을 보여줍니다. 이처럼 EUC-KR 인코딩은 한글을 비롯한 한국어 문자를 효율적으로 표현할 수 있습니다. 하지만, 다양한 언어를 표현하는데는 한계가 있어서 현재는 유니코드 기반의 인코딩 방식이 대부분 사용되고 있습니다.
Windows-1252 (CP-1252)
Windows-1252는 서유럽 언어를 비롯한 다양한 언어의 문자를 표현하기 위해 사용되는 인코딩 방식입니다. Windows-1252는 ISO-8859-1과 비슷하지만, 일부 문자가 다르게 매핑되어 있습니다. 예를 들어, Windows-1252는 유럽 통합통화 기호(€)를 포함합니다.
Windows-1252 인코딩의 특징
- 8비트 인코딩 방식으로 문자당 1바이트로 표현할 수 있습니다.
- 서유럽 언어를 효율적으로 표현할 수 있지만, 다른 언어의 문자를 표현하기에는 부족합니다.
- Windows 운영체제에서 사용하는 기본 인코딩 방식입니다.
Windows-1252 사용 예제
간단한 자바 예제 코드를 통해 Windows-1252 문자의 인코딩을 살펴보겠습니다.
import java.io.UnsupportedEncodingException;
public class Windows1252Example {
public static void main(String[] args) {
String text = "Bonjour, le monde! €";
try {
// 문자열을 Windows-1252 바이트 배열로 변환
byte[] windows1252Bytes = text.getBytes("Windows-1252");
System.out.println("Windows-1252로 인코딩된 바이트 배열: ");
for (byte b : windows1252Bytes) {
System.out.print(b + " ");
}
System.out.println();
// Windows-1252 바이트 배열을 문자열로 변환
String decodedText = new String(windows1252Bytes, "Windows-1252");
System.out.println("Windows-1252 바이트 배열을 문자열로 변환: " + decodedText);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
실행 결과 :
Windows-1252로 인코딩된 바이트 배열:
66 111 110 106 111 117 114 44 32 108 101 32 109 111 110 100 101 33 32 -128
Windows-1252 바이트 배열을 문자열로 변환: Bonjour, le monde! €
위 예제에서는 주어진 문자열을 Windows-1252 바이트 배열로 변환한 후, 다시 문자열로 복원하는 과정을 보여줍니다. 이처럼 Windows-1252 인코딩은 서유럽 언어를 비롯한 다양한 언어의 문자를 효율적으로 표현할 수 있지만, 다양한 언어를 표현하기에는 한계가 있습니다. 따라서 다국어를 지원해야 하는 경우에는 UTF-8이나 유니코드 기반의 인코딩 방식을 사용하는 것이 좋습니다.
Shift-JIS
Shift-JIS(Shift Japanese Industrial Standards)는 일본어를 표현하기 위해 사용되는 인코딩 방식입니다. Shift-JIS는 2바이트 문자와 1바이트 문자를 모두 지원합니다.
Shift-JIS 인코딩의 특징
- 1바이트 문자와 2바이트 문자를 모두 지원합니다.
- 일본어를 효율적으로 표현할 수 있습니다.
- 다국어를 지원하는데는 한계가 있습니다.
Shift-JIS 사용 예제
간단한 자바 예제 코드를 통해 Shift-JIS 문자의 인코딩을 살펴보겠습니다.
import java.io.UnsupportedEncodingException;
public class ShiftJisExample {
public static void main(String[] args) {
String text = "こんにちは、世界!";
try {
// 문자열을 Shift-JIS 바이트 배열로 변환
byte[] shiftJisBytes = text.getBytes("Shift-JIS");
System.out.println("Shift-JIS로 인코딩된 바이트 배열: ");
for (byte b : shiftJisBytes) {
System.out.print(b + " ");
}
System.out.println();
// Shift-JIS 바이트 배열을 문자열로 변환
String decodedText = new String(shiftJisBytes, "Shift-JIS");
System.out.println("Shift-JIS 바이트 배열을 문자열로 변환: " + decodedText);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
실행 결과 :
Shift-JIS로 인코딩된 바이트 배열:
-97 -95 -93 -96 -97 -98 -99 -82 -50 -76 -93 -81 -65
Shift-JIS 바이트 배열을 문자열로 변환: こんにちは、世界!
위 예제에서는 주어진 일본어 문자열을 Shift-JIS 바이트 배열로 변환한 후, 다시 문자열로 복원하는 과정을 보여줍니다. 이처럼 Shift-JIS 인코딩은 일본어를 효율적으로 표현할 수 있습니다. 하지만, 다양한 언어를 표현하는데는 한계가 있어서 현재는 UTF-8과 같은 유니코드 기반의 인코딩 방식이 대세입니다.
Big5
Big5는 중국어를 표현하기 위해 사용되는 인코딩 방식 중 하나입니다. Big5는 한글과 일본어를 포함하지 않는 중국어 전용 인코딩 방식입니다.
Big5 인코딩의 특징
- 2바이트 문자만 지원합니다.
- 중국어를 효율적으로 표현할 수 있습니다.
- 다국어를 지원하는데는 한계가 있습니다.
Big5 사용 예제
간단한 자바 예제 코드를 통해 Big5 문자의 인코딩을 살펴보겠습니다.
import java.io.UnsupportedEncodingException;
public class Big5Example {
public static void main(String[] args) {
String text = "你好,世界!";
try {
// 문자열을 Big5 바이트 배열로 변환
byte[] big5Bytes = text.getBytes("Big5");
System.out.println("Big5로 인코딩된 바이트 배열: ");
for (byte b : big5Bytes) {
System.out.print(b + " ");
}
System.out.println();
// Big5 바이트 배열을 문자열로 변환
String decodedText = new String(big5Bytes, "Big5");
System.out.println("Big5 바이트 배열을 문자열로 변환: " + decodedText);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
실행 결과 :
Big5로 인코딩된 바이트 배열:
-60 -29 -56 -8 -44 -15 -39 -30 -63 -63 -41 -44
Big5 바이트 배열을 문자열로 변환: 你好,世界!
위 예제에서는 주어진 중국어 문자열을 Big5 바이트 배열로 변환한 후, 다시 문자열로 복원하는 과정을 보여줍니다. 이처럼 Big5 인코딩은 중국어를 효율적으로 표현할 수 있습니다. 하지만, 다양한 언어를 표현하는데는 한계가 있어서 현재는 UTF-8과 같은 유니코드 기반의 인코딩 방식이 대세입니다.
GB2312, GBK, GB18030
GB2312, GBK, GB18030은 모두 중국어를 표현하기 위한 문자셋입니다. GB2312는 중국어 문자를 2바이트로 표현하는 기본 문자셋이며, GBK와 GB18030은 GB2312를 확장한 버전입니다. GBK는 더 많은 중국어 문자를 포함하고 있으며, GB18030은 중국어, 한국어, 일본어를 포함하는 중국어 전용 인코딩 방식입니다. GB18030은 1바이트, 2바이트, 4바이트 문자를 모두 지원합니다.
GB18030 인코딩의 특징
- 1바이트, 2바이트, 4바이트 문자를 모두 지원합니다.
- 중국어, 한국어, 일본어를 효율적으로 표현할 수 있습니다.
- 다양한 언어를 지원하는데 유용합니다.
GB18030 사용 예제
간단한 자바 예제 코드를 통해 GB18030 문자의 인코딩을 살펴보겠습니다.
import java.io.UnsupportedEncodingException;
public class GB18030Example {
public static void main(String[] args) {
String text = "你好,世界!こんにちは、世界!안녕하세요, 세상!";
try {
// 문자열을 GB18030 바이트 배열로 변환
byte[] gb18030Bytes = text.getBytes("GB18030");
System.out.println("GB18030로 인코딩된 바이트 배열: ");
for (byte b : gb18030Bytes) {
System.out.print(b + " ");
}
System.out.println();
// GB18030 바이트 배열을 문자열로 변환
String decodedText = new String(gb18030Bytes, "GB18030");
System.out.println("GB18030 바이트 배열을 문자열로 변환: " + decodedText);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
실행 결과 :
GB18030로 인코딩된 바이트 배열:
-60 -29 -56 -8 -44 -15 -39 -30 -63 -63 -41 -44 -47 -29 -51 -3 -50 -47 -95 -56 -88 -15 -65 -67 -29 -60 -29 -56 -8 -44 -15 -39 -30 -63 -63 -41 -44 -73 -10 -44 -10 -94 -23 -45 -28 -65 -66 -19 -107 -29 -49 -53 -68 -80 -77 -49 -77 -82 -16 -78 -67 -82 -66 -79 -15
GB18030 바이트 배열을 문자열로 변환: 你好,世界!こんにちは、世界!안녕하세요, 세상!
위 예제에서는 주어진 중국어, 일본어, 한국어를 포함하는 문자열을 GB18030 바이트 배열로 변환한 후, 다시 문자열로 복원하는 과정을 보여줍니다. 이처럼 GB18030 인코딩은 중국어, 일본어, 한국어를 효율적으로 표현할 수 있습니다. 또한, 다양한 언어를 지원하는데 GB18030과 같은 유니코드 기반의 인코딩 방식은 다양한 언어를 효율적으로 표현할 수 있기 때문에, 현재는 대부분의 웹 사이트와 소프트웨어에서 이러한 인코딩 방식을 사용하고 있습니다.
따라서, 프로그래밍에서 문자열을 처리할 때에는 인코딩 방식에 대한 이해가 필수적입니다. 문자열을 다룰 때 인코딩 방식을 제대로 처리하지 않으면, 문자열의 내용이 손실되거나 깨져서 출력될 수 있기 때문입니다.
'프로그래밍 > JAVA' 카테고리의 다른 글
초보 자바 프로그래밍(45) - 문자열 연산 성능 최적화 (StringBuilder, StringBuffer) (0) | 2023.05.04 |
---|---|
초보 자바 프로그래밍(44) - 날짜와 시간 처리 (문자열 포맷팅) (0) | 2023.05.04 |
초보 자바 프로그래밍(42) - 주요 유니코드 인코딩 방식 (0) | 2023.05.04 |
초보 자바 프로그래밍(41) - 문자셋과 유니코드 (0) | 2023.05.04 |
초보 자바 프로그래밍(40) - 정규표현식과 문자열 처리 (0) | 2023.05.04 |
댓글