Pertipost 중국 내용
먼저 e- 텍스트 양식이 제출되는 방법을 살펴 보겠습니다.
코드 사본은 다음과 같습니다.
<scriptLanguage = "JavaScript">
Stra = "제출 1 = 제출 & text1 = scsdfsd";
varoreq = newActivexObject ( "msxml2.xmlhttp");
oreq.open ( "post", "http : //servername/vdir/tstresult.asp", false);
Oreq.setRequestHeader ( "콘텐츠 길이", stra.length);
Oreq.setRequestHeader ( "content-type", "application/x-www-form-urlencoded");
Oreq.send (Stra);
</스크립트>
If stra = "제출 1 = 제출 & text1 = scsdfsd"; 다음으로 대체됩니다 : Stra = "제출 1 = 제출 & text1 = 중국어";
제출 된 물건이 전혀 옳지 않으며 ASP의 request.form ( "text1")은 값을 전혀 얻을 수 없다는 것을 알게됩니다. request.binaryread를 사용하여 HTMLFORM에 게시물 내용을 작성하고 읽은 다음 문제를 발견했습니다. 제출할 때 양식도 인코딩해야하며 인코딩 된 중국어는 %와 비슷한 탈출 된 문자입니다. 예를 들어, "중국어"는 다음과 같이 인코딩됩니다.%d6%d0%CE%C4. 하하, 나도 아주 바보 야. 나는 Content-Type-Application/x-www-form-urlencoded로 명확하게 작성되었습니다. 물론 이것은 Urlencoded의 모습입니다. 이 경우, 우리는 또한 무엇을 해야하는지 알고 있습니다 - 전환을 직접 수행하고 아래 코드를 참조하십시오.
코드 사본은 다음과 같습니다.
FunctionUrlencoding (vstrin)
strreturn = ""
fori = 1tolen (vstrin)
theychr = mid (vstrin, i, 1)
ifabs (asc (thischr)) <& hfftthen
strreturn = strreturn & thischr
또 다른
InnerCode = ASC (thischr)
ifinnerCode <0then
InnerCode = InnerCode+& H10000
endif
High8 = (내부 및 HFF00)/& HFF
LOW8 = 내부 코드 및 HFF
strreturn = strreturn & "%"& hex (hight8) & "%"& hex (low8)
endif
다음
urlencoding = strreturn
최종 기능 장애
Stra = urlencoding ( "제출 1 = 제출 & 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. Sendstra
</스크립트>
(여기서는 이전 JavaScript 코드를 VBScript로 변경했습니다. 가득 찼던 후에는 아무것도 할 필요가 없었습니다. 이유를 참조하십시오)
파트 II. 얻은 중국 내용을 올바르게 표시하십시오
자, 서버 측의 데이터베이스/파일에 양식 내용을 작성하면 중국어에 문제가 없지만 서버의 응답을보고 싶다면 문제는 다음과 같습니다. 응답 결과가 XML이 아닌 경우 XMLHTTP.ResponseXML에 아무것도 사용하지 않고 CODE : ALERT (OREQ.RSPONETEXML)를 추가하지 않습니다. 우리의 노력의 결과를보십시오.