본문 바로가기
프로그래밍/JAVA

초보 자바 프로그래밍(43) - 주요 MBCS 인코딩 방식

by 머니테크리더 2023. 5. 4.
반응형

주요 MBCS 인코딩 방식 대표 이미지
주요 MBCS 인코딩 방식 대표 이미지

🔖 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과 같은 유니코드 기반의 인코딩 방식은 다양한 언어를 효율적으로 표현할 수 있기 때문에, 현재는 대부분의 웹 사이트와 소프트웨어에서 이러한 인코딩 방식을 사용하고 있습니다.

     

    따라서, 프로그래밍에서 문자열을 처리할 때에는 인코딩 방식에 대한 이해가 필수적입니다. 문자열을 다룰 때 인코딩 방식을 제대로 처리하지 않으면, 문자열의 내용이 손실되거나 깨져서 출력될 수 있기 때문입니다.

     

    댓글