java - url解码出错
问题描述
问题:安卓向后台server发送的中文,解码是乱码。。
环境:
1. tomcat,在server.xml中已经明确了“utf-8'.2. 安卓已经明确了使用Utf-8编码3. 在后台使用` java.net.URLDecoder.decode(url, 'utf-8');`对url进行解码,但是解码出错。。中文是”??“。
应该是编码问题啊,,但是。。。
万分感谢。。。
另外,我使用如下语句测试编码:
if (url.equals(new String(url.getBytes('iso8859-1'), 'iso8859-1'))) { url = new String(url.getBytes('iso8859-1'), 'utf-8'); System.out.println('ios8859-1');}if (url.equals(new String(url.getBytes('GB2312'), 'GB2312'))) { url = new String(url.getBytes('GB2312'), 'utf-8'); System.out.println('gb2312');}
输出
ios8859-1gb2312
。。。。
问题解答
回答1:后台的有没有加入编码过滤器?
回答2:URLEncode/Decode 是针对 URL 里面的参数值,避免与 URL 格式本身发生冲突。Tomcat 会自动解码 URL 参数值,所以你只需要直接获取就好。例如下面这个 JSP:
<%@ page import='java.net.URLEncoder' %><%@ page contentType='text/html;charset=UTF-8' language='java' %><% System.out.println('name=' + request.getParameter('name'));%><a href='https://www.haobala.com/wenda/?name=<%=URLEncoder.encode('你好', 'UTF-8')%>'>你好</a><a href='https://www.haobala.com/wenda/?name=你好'>你好</a>
实际上两个“你好”链接是没有区别的,你可以打开网页源代码看到它们链接地址,一个有编码一个没有,但点击之后,控制台都能输出正确的值,也就是说 request.getParameter('name') 得到的内容是完全一样的。
相关文章:
1. docker内创建jenkins访问另一个容器下的服务器问题2. 如何解决Centos下Docker服务启动无响应,且输入docker命令无响应?3. node.js - 如何避免 webstorm 中 Vue 项目通过 npm 面板运行开发服务器时的 DEBUG_FD 已废弃提示信息4. css3 - div 水平垂直置中5. 老师您的微信号是多少?6. vim里的高亮javascript的javascript.vim 已经放到syntax里了,但是不行。7. html - 关于css二级导航菜单的做法~~~8. 我在centos容器里安装docker,也就是在容器里安装容器,报错了?9. html - css 使用字体的时候,格式有什么特殊要求吗?10. css3 - 学习css构建图形时,遇到一个很有意思的现象,具体代码如下
