2012-02-08 2 views
0

우리는 이름, 나이 등의 사용자 정보가 포함 된 xml 파일을 파싱합니다. 그러나 사용자는 전 세계에서 온 것이므로 xml에 다른 char-set이 필요합니다. 예를 들어 이름이 "Sikl ¢ si"인 사용자가 있습니다. UTF-8 인코딩 xml을 설정하면 C# xmldocument 객체가 xml로드에 예외를 발생시킵니다. 인코딩을 iso-8859-9로 변경 했으므로 이제 작동 중입니다. 그러나 iso-8859-9에서 다루지 않는 또 다른 재미있는 문자가 있다면 문제가 될 것입니다. 이 문제에 대한 궁극적 인 해결책은 무엇입니까?다국적 솔루션을위한 Xml 인코딩

답변

-1

대부분을 다루는 UTF-32로 설정하십시오. UTF에 대한 자세한 내용은 this을 방문하십시오.

+0

아니요, 작동하지 않습니다. XmlDocument는 내가 생각하기에 UTF-32를 모른다. 루트 수준의 오류 메시지를 표시합니다. 루트 수준의 데이터가 유효하지 않습니다. Line 1, position 40 – londondev

+1

UTF-32는 가능한 모든 문자를 포함하지만 UTF-16 및 UTF-8도 마찬가지입니다. UTF-32가 작동하고 UTF-8이 작동하지 않는 이유는 없습니다. – svick

3

궁극적 인 해결책은 처음 엔 파일을 인코딩하는 데 사용 된 인코딩을 파악하는 것입니다. XML 파일은 XML 선언에서 어떤 인코딩을 사용하는지 명시해야합니다 (예 : <?xml charset="UTF-8" ?>). 그렇지 않은 경우 문서는 UTF-8 또는 UTF-16이어야하며 (그 차이가 자동으로 감지 될 수 있음)

XML 파서는 XML 파일의 정보를 기반으로 투명하게 인코딩을 처리해야합니다.

구문 분석하지 않는 문서를받는 경우 문제는 처음에 어떻게 생성되는지에 있습니다. 당신은 그것들을 거부하고 제출 된 내용에 인코딩을 수정하도록 지시해야합니다.

(모든 유니 코드 인코딩은 사용자가 필요로하는 문자뿐만 아니라 많은 수의 문자를 처리 할 수 ​​있습니다.) 문제는 문서가 UTF-8이 아니라 UTF가 아니라는 것입니다 -8 사용중인 문자를 처리 할 수 ​​없습니다).

+0

실제로 우리는 데이터베이스에서 xml 파일을 생성하고 있습니다. 따라서 사용자에게 필요한 charset에 대한 정보는 없습니다. 나는 무엇을해야할지 모른다. – londondev

+1

데이터베이스의 모든 데이터를 UTF-8로 변환하고 수정하는 모든 항목이 UTF-8로되어 있는지 확인하십시오. 현재 깨진 상태에서 복구하려고 할 때 많은 수작업 검사를 수행해야 할 것입니다. – Quentin