"인코딩"속성을 이해하려면 바이트 와 문자 의 차이를 이해해야합니다 .
바이트를 0에서 255 사이의 숫자로 생각하고 문자는 "a", "1"및 "Ä"와 같은 것입니다. 사용 가능한 모든 문자 집합을 문자 집합 이라고합니다 .
각 문자에는이를 나타내는 데 사용되는 하나 이상의 바이트 시퀀스가 있습니다. 그러나 바이트의 정확한 수와 값은 사용되는 인코딩에 따라 다르며 다양한 인코딩이 있습니다.
대부분의 인코딩은 이전 문자 집합과 ASCII라는 인코딩을 기반으로하며 문자 당 단일 바이트 (실제로는 7 비트)이며 미국 영어에서 사용되는 많은 공통 문자를 포함하여 128 개의 문자를 포함합니다.
예를 들어 다음은 60에서 65 사이의 값으로 표시되는 ASCII 문자 집합의 6 개 문자입니다.
Extract of ASCII Table 60-65
╔══════╦══════════════╗
║ Byte ║ Character ║
╠══════╬══════════════║
║ 60 ║ < ║
║ 61 ║ = ║
║ 62 ║ > ║
║ 63 ║ ? ║
║ 64 ║ @ ║
║ 65 ║ A ║
╚══════╩══════════════╝
전체 ASCII 세트에서 사용되는 가장 낮은 값은 0이고 가장 높은 값은 127입니다 (둘 다 숨겨진 제어 문자 임).
그러나 기본 ASCII가 제공하는 것보다 더 많은 문자 (예 : 악센트가있는 문자, 통화 기호, 그래픽 기호 등)가 필요하기 시작하면 ASCII가 적합하지 않으며 더 광범위한 문자가 필요합니다. 더 많은 문자 (다른 문자 집합)가 필요하고 128 자만으로는 모든 문자를 맞추기에 충분하지 않으므로 다른 인코딩이 필요합니다. 일부 인코딩은 1 바이트 (256 자) 또는 최대 6 바이트를 제공합니다.
시간이 지남에 따라 많은 인코딩이 만들어졌습니다. Windows 세계에는 CP1252 또는 ISO-8859-1이 있지만 Linux 사용자는 UTF-8을 선호하는 경향이 있습니다. Java는 기본적으로 UTF-16을 사용합니다.
한 인코딩의 문자에 대한 한 바이트 값 시퀀스는 다른 인코딩에서 완전히 다른 문자를 나타내거나 유효하지 않을 수도 있습니다.
예를 들어 ISO 8859-1 에서 â 는 value의 1 바이트로 표시되는 226
반면 UTF-8 에서는 2 바이트 195, 162
입니다. 그러나,에서 ISO 8859-1 , 195, 162
두 문자가 될 것 ¢, Ã을 .
XML을 일련의 문자가 아니라 일련의 바이트로 생각하십시오.
XML을 수신하는 시스템이 바이트를 본다고 상상해보십시오 195, 162
. 이것이 어떤 캐릭터인지 어떻게 알 수 있습니까?
시스템이 이러한 바이트를 실제 문자로 해석하여 표시하거나 다른 인코딩으로 변환하려면 XML에서 사용되는 인코딩을 알아야합니다.
대부분의 일반적인 인코딩은 ASCII와 호환되기 때문에 기본 알파벳 문자와 기호가 사용되는 한 이러한 경우 인코딩 자체를 나타내는 데 ASCII 문자 만 사용하면 선언 자체가 사라질 수 있습니다. 다른 경우에는 파서가 선언의 인코딩을 파악해야합니다. 선언이 시작되는 것을 알고 있기 때문에 이것을 <?xml
하는 것이 훨씬 쉽습니다.
마지막으로 version
속성은 XML 버전을 지정합니다. 현재 두 가지 버전이 있습니다 ( Wikipedia XML 버전 참조 . 버전간에 약간의 차이가 있으므로 XML 파서가 처리 내용을 알아야합니다. 대부분의 경우 (영어의 경우) 어쨌든 스피커) 버전 1.0이면 충분합니다.