BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #34040同步于 2014/8/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

[已解决]小白求问字符集编码问题

supers
2014/8/26镜像同步11 回复
已经解决了~~ 用UrlEncodedFormEntity对我构造好要post的list进行编码,就解决了。。。。。。。。 ------------------------------------------------------------- 刚刚接触网络编程。。。。在转码的时候遇到一些问题 post一个数据 例如 "测试",我抓包发现被转码为"%B2%E2%CA%D4" 那个应该是“GBK”吧? 那我如何在程序里头把String转换为这种编码的呢 我下面的这段代码输出是 %3F%3F public static String changeCharset(String str, String newCharset) throws UnsupportedEncodingException { if (str != null) { //用默认字符编码解码字符串。 byte[] bs = str.getBytes(); //用新的字符编码生成字符串 return new String(bs, newCharset); } return null; } 如何解决。。。。求问
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
zcyes机器人#1 · 2014/8/26
String result = URLEncoder.encode("测试", "GBK");
supers机器人#2 · 2014/8/26
哦哦 谢谢~~ 但是结果在每个%后面都多了25是怎么回事,无论是什么字符串 【 在 zcyes 的大作中提到: 】 : String result = URLEncoder.encode("测试", "GBK");
zcyes机器人#3 · 2014/8/26
【 在 supers 的大作中提到: 】 : 哦哦 谢谢~~ : 但是结果在每个%后面都多了25是怎么回事,无论是什么字符串 额,不知道你什么意思。直接用那段代码编码str没有问题呀,“测试”输出就是“%B2%E2%CA%D4”呀
supers机器人#4 · 2014/8/26
呃 我也不清楚 我直接system.out出来是对的 List<NameValuePair> nvps = new ArrayList<NameValuePair>(); nvps.add(new BasicNameValuePair("fastloginfield", "username")); nvps.add(new BasicNameValuePair("username", userName)); 然后抓包却是 fastloginfield=username&username=%25B2%25E2%25CA%25D4&password=123456&quickforward=yes&handlekey=ls 【 在 zcyes 的大作中提到: 】 : 额,不知道你什么意思。直接用那段代码编码str没有问题呀,“测试”输出就是“%B2%E2%CA%D4”呀
supers机器人#5 · 2014/8/26
感觉学习不深刻 经常遇到点小问题就卡住了 【 在 zcyes 的大作中提到: 】 : 额,不知道你什么意思。直接用那段代码编码str没有问题呀,“测试”输出就是“%B2%E2%CA%D4”呀
supers机器人#6 · 2014/8/26
是不是因为str带% 在nvps.add(new BasicNameValuePair的时候自动把%自动转义了 【 在 zcyes 的大作中提到: 】 : String result = URLEncoder.encode("测试", "GBK");
zcyes机器人#7 · 2014/8/27
url编码的时候把 % 编码成 %25了 所以你拿到的不是“测试”,而是"%B2%E2%CA%D4"。那么不就直接拿到这个字符串了么,不用再编码了吧
supers机器人#8 · 2014/8/27
感觉我有点愚。。。。。不太明白 str = "测试"; strGBK = URLEncoder.encode(str, "GBK"); 打印出来的strGBK是我要的 %B2%E2%CA%D4 如果直接post str 那抓包发现http包里头就是"测试",中文的 如果post strGBK 则是%25 两种方式服务器端都不会给我想要的应答。 【 在 zcyes 的大作中提到: 】 : url编码的时候把 % 编码成 %25了 : 所以你拿到的不是“测试”,而是"%B2%E2%CA%D4"。那么不就直接拿到这个字符串了么,不用再编码了吧
nuanyangyang机器人#9 · 2014/8/28
这水挺深的。URL的标准只规定了ASCII的表示法,对于中文,至于用gb18030还是utf8或者utf16什么的,都没有说。