如何解决 jsp 中url传值的中文乱码问题

Python014

如何解决 jsp 中url传值的中文乱码问题,第1张

在jsp中,如果在url中传递中文时会出现乱码,其实解决方法非常简单: 第一步:编码(以传递的参数为str为例) 在传递数据前将str进行编码Java.net.URLEncoder.encode(str) 第二步:解码 在获取数据端将得到的数据进行解码 new String(str.getBytes("ISO8859_1"))

简单示例程序如下:

<%@ 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,但那样是不能解决问题的,试图通过String

newStr

=

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)