简单示例程序如下:
<%@ page contentType="text/htmlcharset=gb2312" %
<a href="ds.jsp?url=<%=java.net.URLEncoder.encode("编码的是这里","GB2312")%"点击这里</a<%//request.setCharacterEncoding("GBK")
if(request.getParameter("url")!=null){str=request.getParameter("url")
//下面是解码
str=java.net.URLDecoder.decode(str,"GB2312")
你这个问题真心不好办,建议你把页面编码改为GBK编码把。像楼上说的这些方法看似行得通,原理就是把utf-8转为gbk然后再转回utf-8,但那样是不能解决问题的,试图通过StringnewStr
=
new
String(str.getBytes("gbk","utf-8"))办不到的,结果是中文字符为奇数会出现最后一个字乱码。我以前也曾碰到这个情况,最后还是把页面统一编码解决。
-
出现这种情况,说明读取到的是iso8859-1格式,不能识别中文编码,所以需要转换一下编码格式才可以正常显示的,完整代码举例:String data = "&version=1410&idType=101&idNumber=4107701214512&ext1=1"
System.out.println(data)
URL url = new URL("http://localhost/bankcardcert/bankCardValidate.htm")
StringBuffer bankXmlBuffer = new StringBuffer()
//创建URL连接,提交到银行卡鉴权,获取返回结果
HttpURLConnection connection = (HttpURLConnection) url.openConnection()
connection.setRequestMethod("GET")
connection.setDoOutput(true)
connection.setRequestProperty("User-Agent", "directclient")
PrintWriter out = new PrintWriter(connection.getOutputStream())
out.println(data)
out.close()
BufferedReader in = new BufferedReader(new InputStreamReader(connection
.getInputStream()))
String inputLine
while ((inputLine = in.readLine()) != null) {
bankXmlBuffer.append(inputLine)
}
in.close()
String data = new String(bankXmlBuffer.toString().getBytes("iso-8859-1"), “utf-8”)
System.out.println(data)