最近要开发一个项目,涉及idhttp与servlet通讯,我用post向servlet发送一串字符串:
procedure TfrmMain.RzButton1Click(Sender: TObject);
var
GetStream: TMemoryStream;
slst: TStringList;
begin
GetStream := TMemoryStream.Create;
slst := TStringList.Create;
slst.Clear; slst.Add(Trim(self.edt2.Text));
try
self.IdHTTP.Post(Trim(self.edt1.Text),slst,GetStream);
finally
slst.Free;
GetStream.Free;
self.WriteLog(self.IdHTTP.Response.Server+': '
+self.IdHTTP.Response.ResponseText,0);
end;
end; slst的内容是:
<NetDataQuery><EventID>2009322935092485391CNNOKIAWAP001</EventID><OperationTarget>HPR白名单</OperationTarget></NetDataQuery>但服务器接受后中文乱码,就是“白名单”会乱码,那边的人说要把字符串转成gb2312或gbk发送,我在网上找了许久也没找到如何转,请教各位坛友有什么方法没?在下感激不尽!
procedure TfrmMain.RzButton1Click(Sender: TObject);
var
GetStream: TMemoryStream;
slst: TStringList;
begin
GetStream := TMemoryStream.Create;
slst := TStringList.Create;
slst.Clear; slst.Add(Trim(self.edt2.Text));
try
self.IdHTTP.Post(Trim(self.edt1.Text),slst,GetStream);
finally
slst.Free;
GetStream.Free;
self.WriteLog(self.IdHTTP.Response.Server+': '
+self.IdHTTP.Response.ResponseText,0);
end;
end; slst的内容是:
<NetDataQuery><EventID>2009322935092485391CNNOKIAWAP001</EventID><OperationTarget>HPR白名单</OperationTarget></NetDataQuery>但服务器接受后中文乱码,就是“白名单”会乱码,那边的人说要把字符串转成gb2312或gbk发送,我在网上找了许久也没找到如何转,请教各位坛友有什么方法没?在下感激不尽!
public class ChStr {
public static String toChinese(String strvalue) {
try {
if (strvalue == null) { //当变量strvalue为null时
strvalue="";
return strvalue;//将变量strvalue赋值为空
} else {
System.out.println(strvalue);
System.out.println("***************");
byte[] byteStr=strvalue.getBytes("ISO8859-1");
//strvalue = new String(strvalue.getBytes("iso-8859-1"),"gb2312");//将字符串转换为GBK编码
//strvalue = strvalue.trim(); //去除字符串的首尾空格
System.out.println(new String(byteStr,"gb2312"));
return new String(byteStr,"gb2312");
}
} catch (Exception e) {
strvalue=""; //将变量strvalue赋值为空
return strvalue;
}
//返回转换后的输入变量strvalue
} // 处理字符串中的空值
public static final String nullToString(String v, String toV) {
if (v == null || "".equals(v)) { //当输入变量v为空时
v = toV; //将输入变量v赋值为输入变量toV
}
return v; //返回转换后的输入变量v
}
//过滤危险字符
public static final String filterStr(String str){
str=str.replaceAll(";","");
str=str.replaceAll("&","&");
str=str.replaceAll("<","<");
str=str.replaceAll(">",">");
str=str.replaceAll("'","");
str=str.replaceAll("--"," ");
str=str.replaceAll("/","");
str=str.replaceAll("%","");
return str;
}
}
idhttp.post(url,Request,GetStream);这样试试,没搞过这个。