필드 중 하나에 XML 문서가 포함 된 HTTP POST (x-www-form-urlencoded)의 수신 측에 있습니다. 그 문서를 받고, 몇 가지 요소를보고 데이터베이스에 저장해야합니다 (나중에 사용하기 위해). 문서는 UTF-8 형식이며 적절한 헤더가 있으며 많은 이상한 문자가 포함될 수 있습니다. 이 같은 MSXML/ASP에서 UTF-8 인코딩 된 XML 구문 분석
내가 데이터를 수신
: 나는 DOM 문서에서 팔 수Set xmlDoc = CreateObject("MSXML2.DOMDocument.3.0")
xmlDoc.async = False
xmlDoc.loadXML(Request.Form("xml"))
모든 UTF-8 형태로 아직도있다. 예를 들어,이 문서 (조잡한 간체) :
<?xml version="1.0"?>
<data>
ä
</data>
그것은 제거 : 나는 xmlDoc.XML 보면
<?xml version="1.0" encoding="UTF-8"?>
<data>
ä
</data>
항상
<?xml version="1.0" encoding="UTF-8"?>
<data>
ä
</data>
로 나오는,이 얻을 (VBScript에서 사용하는 어떤 문자열이든 "인코딩에 알 수없는"이 종류의 의미가 있습니다.)하지만 UTF-8로 인코딩 된 do를 나타내는 문자 시퀀스입니다. 기념물.
마치 MSXML이 헤더의 인코딩 정보를 신경 쓰지 않는 것과 같습니다. MSXML에 문제가 있습니까? 아니면 게시 데이터 인코딩과 관련이 있습니까? 이것은 첫 번째 UTF-8 (특정 문자가 여러 바이트로 쓰여지는 경우)과 바이트 단위로 URL 인코딩 된 경우 ("ä"는 실제로 % C3 % A4로 전송됩니다) 형식의 "이중 인코딩"형식입니다.
저는 항상 UTF-8이라고 가정하는 것과 같이 하드 코드를 사용하고 싶지 않습니다. (앞으로 언젠가는 UTF-16이 될 수도 있기 때문입니다.) 데이터에 키릴 문자와 아랍어 문자가 포함될 수 있으므로 다른 문자 세트 (예 : iso-8859-1)로 "하드 변환"을 수행 할 수 없습니다. 이 문제를 해결하려면 어떻게해야합니까?
@ionn : @jstck가있는 팀원이라면 조금 혼란 스럽습니까? 옵션 2의 경우 "Accept-Charset : UTF-8"헤더를 보내려는 요청 헤더에 추가해보십시오. 그러나 이것은 또한 실제로 필요한 __response__ charset이 무엇인지 명시하고 있기 때문에 조금 이상합니다. 나는 더 신뢰할 수있는 옵션 1을 찾는다. 저는 CURL을 모르지만 스크립팅 환경에서는 옵션 3이 바람직합니다. CURL은 다를 수 있습니다. – AnthonyWJones