XML HTTP 인 코딩 해결 방법(UTF 8,GB 2312 인 코딩 디 코딩)
<SCRIPT language="JavaScript">
strA = "submit1=Submit&text1=scsdfsd";
var oReq = new ActiveXObject("MSXML2.XMLHTTP");
oReq.open("POST","http://ServerName/VDir/TstResult.asp",false);
oReq.setRequestHeader("Content-Length",strA.length);
oReq.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");
oReq.send(strA);
</ScRIPT>
strA="submit 1=Submit&text 1=scsdfsd";strA="submit 1=Submit&text 1=중국어"로 바 꾸 기;제출 한 것 이 전혀 맞지 않 고 ASP 에서 Request.Form("Text 1")에서 값 을 찾 을 수 없다 는 것 을 알 게 될 것 입 니 다.나 는 Request.Biary Read 로 HTML Form 의 Post 내용 을 써 서 보 니 문 제 를 발견 했다.Form 제출 할 때 도 인 코딩 해 야 하 는데 인 코딩 된 중국 어 는%??%???예 를 들 어'중국어'는%D6%D0%CE%C4 로 인 코딩 됩 니 다.하하,내 가 멍청 한 탓 도 있 고,남 의 CONTENT-TYPE 에 분명히 똑똑히 쓰 여 있 잖 아.-application/x-www-form-urlencoded,urlencoded 잖 아.당연히 이 렇 지.그렇다면 우 리 는 어떻게 해 야 할 지 알 고 있 습 니 다.-스스로 전환 하 세 요.코드 는 다음 과 같 습 니 다.당신 이 그곳 에서 본 중국 어 는 문제 가 없습니다.그러나 서버 의 Response―문 제 를 보고 싶다 면 Response 의 결과 가 XML 이 아니라면 XML HTTP.response XML 에는 당연히 동쪽 이 없 을 것 입 니 다.response Text 를 사용 하 세 요.코드 의 마지막 에 한 마디 추가:alert(oReq.response Text)우리 가 열심히 일 한 결 과 를 보 세 요.P 그런데............................................................저 는 전 화 를 할 수 없습니다.관심 이 있 으 면 직접 해 보 세 요.Post 도 사용 하지 않 습 니 다.Get 은 중국어 가 들 어 있 는 웹 페이지 를 발견 할 수 있 습 니 다.)이 유 는 간단 합 니 다.XML HTTP 가 Response 를 받 았 을 때 Response 가 UTF 8 인 코딩 이 라 고 가정 합 니 다.Response 가 XML 이 라면 encoding 을 통 해 인 코딩 을 지정 할 수 있 지만 HTML 은 안 됩 니 다.(귀신 이 곡 할 노 릇 이 군 GB 2312,다시 쓰 러 뜨 려 라!)그래서 GB 2312 인 코딩 이 들 어 있 는 HTML 을 UTF 8 형식 으로 생각 하고 실수 하지 않 아야 귀신 이 있 습 니 다!다행히도 구제 할 방법 이 있 습 니 다.XML HTTP 의 response Body 속성 에는 디 코딩 되 지 않 은 Resonse 가 포함 되 어 있 습 니 다."a raw undecoded bytes as received directly from the server":)유일한 문 제 는 response Body 가 unsigned bytes 배열 로 돌아 가 는 것 입 니 다.우 리 는 어떻게 그것 을 방문 하고 어떻게 BSTR 로 전환 합 니까?이것 이 바로 내 가 위 에서 코드 를 VBScript 로 바 꾼 이유 입 니 다.VBScript Can do it,but JavaScript Cannot!코드 는 다음 과 같다.http://www.dhtmlx.com Start Building Professional Ajax Web Applications Today 는 최근 DHTMLX tree 를 사 용 했 습 니 다.중국어 xml 을 사용 할 수 없고 오류 가 발생 했 습 니 다.전체 시스템 은 GB 2312 이 고 DHTMLX 는 UTF 8 만 지원 합 니 다.영 어 는 정상 이 고 중국어 가 잘못 되 었 습 니 다.사용법 도 간단 합 니 다.DHTMLX 프레젠테이션 에 사 용 된 코드 입 니 다
<SCRIPT language="VBScript">
Function URLEncoding(vstrIn)
strReturn = ""
For i = 1 To Len(vstrIn)
ThisChr = Mid(vStrIn,i,1)
If Abs(Asc(ThisChr)) < &HFF Then
strReturn = strReturn & ThisChr
Else
innerCode = Asc(ThisChr)
If innerCode < 0 Then
innerCode = innerCode + &H10000
End If
Hight8 = (innerCode And &HFF00)\ &HFF
Low8 = innerCode And &HFF
strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
End If
Next
URLEncoding = strReturn
End Function
strA = URLEncoding("submit1=Submit&text1= ")
oReq = CreateObject("MSXML2.XMLHTTP")
oReq.open "POST","http://ServerName/VDir/TstResult.asp",false
oReq.setRequestHeader "Content-Length",Len(strA)
oReq.setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded"
oReq.send strA
</SCRIPT>
tree.asp 인 코딩 은 gb 2312 로 전체 시스템 과 일치 합 니 다.response.write 로 xml 전체 시스템 인 코딩 을 되 돌려 줄 수 없습니다.DHTMLX 에서 만 방법 을 생각 할 수 있 습 니 다.자 료 를 좀 찾 아 보 았 더 니 결국 해결 되 었 다.다시 한 번 깊이 들 어가 보 니 Microsoft.XML HTTP 의 원인 으로 위의 파일 이 발견 되 었 습 니 다.예 를 들 어 간단 합 니 다.다음 과 같이 수정 합 니 다.1.VBScript 의 중국어 변환 함 수 를 추가 합 니 다
<SCRIPT language="VBScript">
Function URLEncoding(vstrIn)
strReturn = ""
For i = 1 To Len(vstrIn)
ThisChr = Mid(vStrIn,i,1)
If Abs(Asc(ThisChr)) < &HFF Then
strReturn = strReturn & ThisChr
Else
innerCode = Asc(ThisChr)
If innerCode < 0 Then
innerCode = innerCode + &H10000
End If
Hight8 = (innerCode And &HFF00)\ &HFF
Low8 = innerCode And &HFF
strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
End If
Next
URLEncoding = strReturn
End Function
Function bytes2BSTR(vIn)
strReturn = ""
For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next
bytes2BSTR = strReturn
End Function
strA = URLEncoding("submit1=Submit&text1= ")
oReq = CreateObject("MSXML2.XMLHTTP")
oReq.open "POST","http://ServerName/VDir/TstResult.asp",false
oReq.setRequestHeader "Content-Length",Len(strA)
oReq.setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded"
oReq.send strA
alert bytes2BSTR(oReq.responseBody)
</SCRIPT>
2.dhtmlxcomon.js 의 getXMLtopNode 에 var xmlString=this.xmlDoc.responseText;var xmlString=bin2str(this.xmlDoc.responseBody);/js 에서 VBScript 스 크 립 트 를 직접 호출 할 수 있 습 니 다.3.xml 을 출력 하 는 asp 파일 의 시작 부분 에<%response.ContentType="application/xml"%>를 추가 할 수 있 습 니까?xml version='1.0' encoding='GB2312'?> 물론 파일 도 gb 2312 형식 으로 저 장 됩 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
XML HTTP 인 코딩 해결 방법(UTF 8,GB 2312 인 코딩 디 코딩)데이터 전송 측 에 서 는 자바 script 의 escape 함 수 를 이용 하여 모든 중국 어 를 영문 인 코딩 으로 미리 변환 하여 저장 합 니 다(ASP 등 다른 언어의 함수 로 실시 간 으로 출력 을 변환 할...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.