一个读取xmlhttp传递过来数据并进行字符转换的问题,中文显示始终是乱码。
在客户端用js调用xmlhttp,并发送一段数据到服务器执行,这段数据中有中文字符,服务器在接收数据后直接显示这段数据,但是中文显示是乱码,我已经转换过字符了。程序如下:
1、服务器端,一个servlet
BufferedReader Stream = request.getReader();
String sline = " ";
String S = "";
do{
if(sline == null)
break;
sline = Stream.readLine();
if(sline != null)
S +=String.valueOf(sline) ;
} while(true);
String str=new String(S.getBytes("iso-8859-1"),"gb2312");
out.println(str);
2、客户端
<script language="vbscript">
Function bytes2BSTR(vIn)
Dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,NextCharCode
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
</script>
<script language="JavaScript">
function getXML(URL) {
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.Open("GET",URL, false);
try {
xmlhttp.Send("测试文字!");
var result = xmlhttp.status;
}
catch(e) {
return(false);
}
if(result==200) {
return(bytes2BSTR(xmlhttp.responseBody));
}
var xmlhttp = null;
}
function update()
{
var a=getXML('testreadxmlhttp.jsp');
document.all("res").value=a;
}</script>
请点击发送按钮:<input type="button" value="发送" onclick="javascript:update();">
<textarea cols=50 rows=10 id="res"></textarea>
点“发送”按钮后,在文本域中显示的中文始终是乱码。
暂时给20分,问题解决了100分或者200分感谢!