关于java.net.URLEncoder.encode编码问题

我叫阿狸猫 2013-04-26 09:33:36
小弟想问下

response.addHeader("Content-Disposition","attachment;filename='"+java.net.URLEncoder.encode("中文.zip","UTF-8")+"'");

java.net.URLEncoder.encode里的编码和什么有关的?我把页面改成GBK也不乱码。
这里面的声明应使用 UTF-8。如果不使用该编码,可能造成不兼容性。是什么意思?是一定要用UTF-8的意思么?
...全文
553 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
文森特先森 2013-05-01
  • 打赏
  • 举报
回复
那要看你的项目编码设置咯,你的项目是GBK的话,tomcat的传输编码会以你运行project为准,你可以改成iso的试试的嘛
文森特先森 2013-04-28
  • 打赏
  • 举报
回复
使用urlencoder编码会将中文变成你在浏览器地址栏看到的%XX形式,至于选择哪种enc跟你jvm的default charset有关,因为java项目一般用的都是UTF-8编码,为了防止你的中文以其他编码方式打开的时候乱码(如果这个时候乱码了,你在编码解码也是乱码),推荐整个项目使用同一编码解码,如果你的项目用的是GBK的,那么java.net.URLEncoder.encode("中文.zip","GBK")也是完全没问题的,但如果你用其他编码比如iso8859-1就会解出来乱码了
文森特先森 2013-04-28
  • 打赏
  • 举报
回复
引用 2 楼 xuxiaocheng1 的回复:
[quote=引用 1 楼 sfgm521 的回复:] 使用urlencoder编码会将中文变成你在浏览器地址栏看到的%XX形式,至于选择哪种enc跟你jvm的default charset有关,因为java项目一般用的都是UTF-8编码,为了防止你的中文以其他编码方式打开的时候乱码(如果这个时候乱码了,你在编码解码也是乱码),推荐整个项目使用同一编码解码,如果你的项目用的是GBK的,那么java.net.URLEncoder.encode("中文.zip","GBK")也是完全没问题的,但如果你用其他编码比如iso8859-1就会解出来乱码了
至于选择哪种enc跟你jvm的default charset有关 默认是UTF-8? 和tomcat目录下的conf目录下的设置端口号那个标签里的URIEncoding="UTF-8"这个属性有关么?[/quote] 有的,如果你用的是tomcat的话,因为你网络传输需要经过tomcat处理的,tomcat会将你的网络流编码转换成配置中的编码,如果两边不对应的话,有可能会出现乱码,但如果编码站位较长转为短码也不会乱码
我叫阿狸猫 2013-04-28
  • 打赏
  • 举报
回复
引用 1 楼 sfgm521 的回复:
使用urlencoder编码会将中文变成你在浏览器地址栏看到的%XX形式,至于选择哪种enc跟你jvm的default charset有关,因为java项目一般用的都是UTF-8编码,为了防止你的中文以其他编码方式打开的时候乱码(如果这个时候乱码了,你在编码解码也是乱码),推荐整个项目使用同一编码解码,如果你的项目用的是GBK的,那么java.net.URLEncoder.encode("中文.zip","GBK")也是完全没问题的,但如果你用其他编码比如iso8859-1就会解出来乱码了
至于选择哪种enc跟你jvm的default charset有关 默认是UTF-8? 和tomcat目录下的conf目录下的设置端口号那个标签里的URIEncoding="UTF-8"这个属性有关么?
我叫阿狸猫 2013-04-28
  • 打赏
  • 举报
回复
引用 3 楼 sfgm521 的回复:
[quote=引用 2 楼 xuxiaocheng1 的回复:] [quote=引用 1 楼 sfgm521 的回复:] 使用urlencoder编码会将中文变成你在浏览器地址栏看到的%XX形式,至于选择哪种enc跟你jvm的default charset有关,因为java项目一般用的都是UTF-8编码,为了防止你的中文以其他编码方式打开的时候乱码(如果这个时候乱码了,你在编码解码也是乱码),推荐整个项目使用同一编码解码,如果你的项目用的是GBK的,那么java.net.URLEncoder.encode("中文.zip","GBK")也是完全没问题的,但如果你用其他编码比如iso8859-1就会解出来乱码了
至于选择哪种enc跟你jvm的default charset有关 默认是UTF-8? 和tomcat目录下的conf目录下的设置端口号那个标签里的URIEncoding="UTF-8"这个属性有关么?[/quote] 有的,如果你用的是tomcat的话,因为你网络传输需要经过tomcat处理的,tomcat会将你的网络流编码转换成配置中的编码,如果两边不对应的话,有可能会出现乱码,但如果编码站位较长转为短码也不会乱码[/quote] 为什么我将URIEncoding改成GBK也没见它乱码呢?

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧