프로그래밍/Js

이기종간 데이터 변환(한글) 전문에 한글 전송 방법

소행성왕자 2024. 8. 22. 17:53

전문 Input 값에 한글이 들어가는경우 한글을 그대로 사용하면 안된다.

한글을 Uint8Array는 8비트 부호 없는 정수(0-255) 배열을 나타내는 JavaScript의 타입으로 변환해야 합니다.

console.log( iconv.encode('홍길동', 'euc-kr') )

iconv.encode('홍길동', 'euc-kr')의 결과로 받은 Uint8Array [200,171,177,230,181,191]는 "홍길동"이라는 한글 문자열을 EUC-KR 인코딩으로 변환한 바이트 배열입니다. 이를 자세히 설명하겠습니다:

  1. Uint8Array는 8비트 부호 없는 정수(0-255) 배열을 나타내는 JavaScript의 타입입니다.
  2. 각 숫자는 EUC-KR 인코딩에서 해당 한글 문자를 나타내는 바이트 값입니다:
    • [200, 171]: "홍"의 EUC-KR 인코딩
    • [177, 230]: "길"의 EUC-KR 인코딩
    • [181, 191]: "동"의 EUC-KR 인코딩
  3. 이 바이트 배열을 16진수로 표현하면 다음과 같습니다:
    [0xC8, 0xAB, 0xB1, 0xE6, 0xB5, 0xBF]
  4. 이는 앞서 설명한 b'\xc8\xab\xb1\xe6\xb5\xbf'와 동일한 바이트 시퀀스입니다.

이 Uint8Array는 EUC-KR로 인코딩된 "홍길동"의 바이너리 표현입니다. 이 데이터를 EUC-KR을 지원하는 시스템에 전송하면, 해당 시스템은 이를 올바르게 "홍길동"으로 해석할 수 있습니다.만약 이 데이터를 다시 문자열로 변환하고 싶다면, iconv.decode() 함수를 사용할 수 있습니다:

const decodedString = iconv.decode(Buffer.from([200,171,177,230,181,191]), 'euc-kr');
console.log(decodedString); // 출력: 홍길동

이렇게 인코딩과 디코딩 과정을 통해 다양한 문자 인코딩 시스템 간에 데이터를 변환하고 전송할 수 있습니다