문자 집합과 문자 부호화 방식에 대해서

2240 단어 문자 코드

소개



몇 년 전의 이야기입니다만, 「MySQL 에 등록한 데이터가 문자화되어 있습니다만, 문자 코드를 UTF-8 로부터 Unicode 로 바꾸면 고칠까요?」라고 하는 의미 불명한 것을 질문되었습니다 . (나의 주위에서는··) 이번에는 벌써 거의 UTF-8 로 취급하는 것이 많아, 문자 코드로 고민되는 일도 적어졌습니다만, 그래서 기본적인 것을 남겨두겠다고 생각합니다.

문자 집합이란?



읽고 글자처럼 문자의 "집합"입니다. Wikpedia의 집합 페이지를 보면

수학에서의 집합(슈고, 영국: set, 부처: ensemble, 독: Menge)이란, 대략적으로 말하면 몇개의 「물건」으로 이루어지는 「모임」이다.

라고 써 있습니다. 덜 구체적이었습니다
나 나름의 말로 표현하면 「문자 집합에 포함되는 문자, 포함되지 않는 문자가 명확하게 되어 있다」 「문자 집합에 포함되는 문자가 1개 1개 구별할 수 있다」라고 하는 느낌입니까. 음, 불필요하게 이해하기 어렵다 ··?

문자 인코딩 방식이란?



이른바 "인코딩"입니다. 문자의 집합을 컴퓨터로 취급할 수 있도록 한 것으로, 대표적인 것에는 UTF-8, Shift_JIS, EUC-JP 등이 있습니다.
문자 집합에 포함되는 임의의 문자와 그 encode 된 문자의 사이에는 1 대 1 의 대응이 존재합니다.

좀 더 구체적으로 · ·



이해하기 쉽도록 섬세한 부분은 끝이 접힙니다.
세세한 부분을 제대로 설명할 수 있는 자신감도 없기 때문에, 이 투고를 보신 여러분 스스로 보다 자세하게 조사하는 것을 추천합니다.

일본어의 문자 집합으로서 주요한 것에는 아래와 같이 2개가 있습니다.

JIS 한자 코드

문자에 구와 점의 번호가 할당되고 있는 것
부호화 방식으로는 주로 Shift_JIS나 EUC-JP가 있다
유니코드

문자에 코드 포인트라는 번호가 할당 된 것
인코딩 방식으로는 주로 UTF-8과 UTF-16이 있습니다.


같은 문자 집합을 베이스로 하고 있는 Shift_JIS 와 EUC-JP 사이는 기본적으로는 encode 방식을 변환할 수가 있습니다. 위에서 언급했듯이 문자 집합과 인코딩 체계 사이에는 일대일 대응이 있으므로 구역 번호를 통해 Shift_JIS와 EUC-JP 사이에도 일대일 대응이 존재합니다. 합니다.

한편, 다른 문자 집합의 Shift_JIS 와 UTF-8 입니다만, 원래 집합이 다르기 때문에, 보통으로는 변환할 수 없습니다. 실제로 변환 프로그램을 본 적도 쓴 적도 없지만, 아마 변환표와 같은 것을 사용하고 있다고 생각됩니다. (다르면 미안해)
문자 집합이 다르기 때문에, Shift_JIS 의 파 대시(~)를 UTF-8 의 "WAVE DASH"와 "FULLWIDTH TILDE"의 어느 쪽에 대응 붙일까? 같은 문제도 발생하네요. UTF-8 에서 Shift_JIS 로의 변환이라면 1개로 정해지지만··(수학 용어로 말하면 전사).

사이고에게



전하고 싶은 것은, 「문자 코드의 한마디로 끝나지 않고, 집합의 개념과 encode 방식을 제대로 의식해 취급합시다」라고 하는 것입니다.

여담



UTF-16은 2바이트 단위로 문자를 처리하기 때문에 파일의 시작 부분에 바이트 순서 표시(소위 BOM)를 두어 해당 파일이 어느 엔디안에서 작성되었는지를 판별합니다. 반면, UTF-8은 1바이트 단위로 처리하므로, 본래 BOM은 불필요합니다만, 왠지 BOM을 붙일 수도 있다고 하는 이상한 일이 되고 있습니다.

좋은 웹페이지 즐겨찾기