webclient的UploadStringAsync方法中文乱码问题
我在silverlight中向java服务端post数据,使用如下语句:
Uri endpoint = new Uri("http://127.0.0.1:8080/JsonTest/servlet1",UriKind.Absolute); //指定获取对象地址
WebClient client = new WebClient();
client.UploadStringAsync(endpoint, "post", "name=余翔宇");
java 服务端servlet1程序如下:
String s=request.getParameter("name");
System.out.println(s);
String s1=new String(s.getBytes("unicode"),"gb2312");
System.out.println(s1);
String s2=new String(s.getBytes("UTF-8"),"gb2312");
System.out.println(s2);
String s3=new String(s.getBytes("iso8859-1"),"gb2312");
System.out.println(s3);
String s4=new String(s.getBytes("UTF-16"),"gb2312");
System.out.println(s4);
结果均为中文乱码,而如果上传name字符串为英文则没有问题,跪请高手赐教中文乱码问题。
[解决办法]
JAVA没试过,.net下可以用如下方式取得值
int length = context.Request.ContentLength;
byte[] bytes = context.Request.BinaryRead(length);
string name = UTF8Encoding.UTF8.GetString(bytes);
[解决办法]
在客户端将数据转换为16进制,服务器获取后再转换回来
[解决办法]
建议都使用UTF-8的方式进行发送和接受。