오랫동안 혼란 스러웠던 것은 너무 많은 소프트웨어가 "문자셋"과 "인코딩"이라는 용어를 동의어로 사용한다는 것입니다.
사람들이 유니 코드 "인코딩"을 언급 할 때, 유니 코드 문자를 ASCII 또는 UTF-8과 같은 바이트 시퀀스로 나타내는 규칙 집합을 의미합니다. 이것은 합리적이고 직관적 인 것 같습니다. 아이디어는 지정된 규칙 세트를 사용하여 해당 문자를 바이트로 "인코딩"하는 것입니다.
그 규칙 세트 때로는에만 모든 유니 코드 문자의 일부 부분 집합 "인코딩"할 수있는 기능을 제공하기 때문에, 당신이 상상할 수있는 '문자 세트'에 대한 짧은 - - 방법에 대한 어떤 관계없이 - 단순히 유니 코드 문자 집합을 의미하는 것 "캐릭터 세트"고 해당 문자가 인코딩됩니다. 따라서 인코딩은 문자 세트 (128 문자 인코딩 규칙 만있는 128 문자의 문자 세트와 연관된 ASCII와 같은 인코딩)를 의미하지만 문자 세트는 인코딩을 의미 할 필요는 없습니다 (예 : UTF-8, UTF) -16과 UTF-32는 모두 다른 인코딩이지만 동일한 문자 집합을 인코딩 할 수 있습니다).
그러나-그리고 여기 내 질문의 요점-단어 "charset"의 실제 사용이 단어의 구성이 암시하는 것과 일치하지 않습니다. 거의 항상 "인코딩"을 의미합니다.
예를 들면 다음과 같습니다.
charset
HTML 의 속성은 인코딩을 지정하는 데 사용됩니다Charset
Java의 인코딩은charset
그리고character sets
MySQL에서는 다시 한 번 인코딩입니다.
이 호기심 많은 언어의 사용은 몇 살이며, '문자셋'에 대한 반 직관적 인 정의는 어떻게 존재하게 되었습니까? 실제로 사용중인 인코딩과 지원하는 문자 집합 사이에 실제로 일대일 매핑 이 있었던 시점에서 시작 되었습니까? 아니면이 단어의 정의를 지시하는 영향력있는 표준이나 사양이 있습니까?
charset
유니 코드 표준보다 이전 버전이므로 "일대일 매핑"이 아닐 수 있지만 문서에 필요한 문자는 인코딩 선택을 강요하는 경향이있었습니다. 그러나 나는 그 단어의 실제 역사를 연구 할 시간이 없다 ...