博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
<video/><img/>路径带中文,显示乱码(URIEncoding)
阅读量:7076 次
发布时间:2019-06-28

本文共 1954 字,大约阅读时间需要 6 分钟。

问题来源:
  做html5的video的时候,在设置播放文件的文件名为中文的时候,出现GET请求的文件名为乱码(实际上,也不是乱码,是对应的"utf-8"字符串的byte数组的16进制表示的字符串。∵我设置的jsp/html编码都是"utf-8")
 
  尝试了一般的处理手段(如 “request.setCharacterEncoding("utf-8");”,“str = new String(str.getBytes("ISO-8859-1"),"utf-8");”,“
URLEncoder.encode”,“
URLEncoder.encode”),都不见效。
 
  想到,类似<video>,<img/> 等的数据请求,是浏览器客户端直接向tomcat发送的请求信息,然后tomcat也直接就将数据发给浏览器了,请求的信息 并不会经过 我们编写的 jsp、servlet、filter等的处理,因此 上面的处理手段不会生效。
用<img/>测试了一下,测试代码为:
1  2  3    4     主页 5     
6 7 8 主页
9
10 郁金香11 12
1 <%@ page language="java" import="java.util.*, fileTraversal.*, java.net.*" pageEncoding="utf-8"%> 2 <%request.setCharacterEncoding("utf-8");%> 3  4  5    6     主页 7     
8 9 10 主页
11
12 <%13 String str = "花.jpg";14 //String str = URLEncoder.encode("花.jpg", "utf-8");15 %>16 23 郁金香24 25

测试结果:

 
 
  于是在网上搜索 “<img/>路径带中文 乱码”的相关处理,暂时(20151025) 我只找到下面这一种处理方式(修改 “
??\apache-tomcat-7.0.47-windows-x86\conf\server.xml”的配置):
 
  1、原来的 <Connector/>的内容为:
  <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />
 
  2、添加 URIEncoding 的设置后,变成:
  <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" 
URIEncoding="UTF-8"  />
 
  3、重启 tomcat,测试 一切OK。

 

PS:注意:这样修改之后 tomcat向 我们编写的jsp、servlet、filter等 发送信息的时候,就是"UTF-8"编码了,有些地方的“str = new String(str.getBytes("ISO-8859-1"),"utf-8");”就不再需要了(调用了反而出错)(没有指定URIEncoding的时候,tomcat默认接收/发送的都是"ISO-8859-1"编码的信息)
 
ZC:自我感觉,浏览器<-->tomcat的流程是这样的:
  浏览器 --> 发请求 --> tomcat --> 我们编写的jsp、servlet、filter等 --> tomcat --> 浏览器。
  其中,传送的数据 都是 byte数组的形式,又∵ tomcat的默认编码为ISO-8859-1,∴即使 jsp/html编码设置为utf-8,我们从tomcat得到的数据仍然是乱码(utf-8字符串的byte数组的16进制表示的字符串),需要操作“str = new String(str.getBytes("ISO-8859-1"),"utf-8");”进行转换。
  实际上,我觉得 处理中文乱码最简单的方式是 jsp/html/servlet/tomcat 的编码都设置成 utf-8,即可。(这样设置之后,就不再需要处理乱码的GET/POST方式,等等方式了) --> 这一条,待验证,以后自己边做边验证(20151025)。
 
 
 
C
 
 

转载于:https://www.cnblogs.com/codeskilla/p/4986624.html

你可能感兴趣的文章
python的单、双、多分支流程控制
查看>>
accept_mutex与性能的关系 (nginx)
查看>>
滚动条
查看>>
20. Valid Parentheses
查看>>
cssReset - css初始化
查看>>
mybatis generator Date类型时间丢失
查看>>
python 基础 4.5 用函数实现九九乘法表
查看>>
python 基础 9.2 mysql 事务
查看>>
利用表格分页显示数据的js组件datatable的使用
查看>>
shell编程系列13--文本处理三剑客之sed利用sed追加文件内容
查看>>
js操作大全(转)
查看>>
springmvc项目提交post表单参数乱码解决办法
查看>>
flask 第七章 简陋版智能玩具 +MongoDB初识和基本操作
查看>>
Maven之setting.xml 配置详解
查看>>
linux中运行.sql文件
查看>>
ftl 列表弄成js数组
查看>>
课后作业:字串加密
查看>>
REGEXP 正则的实现两个字符串组的匹配。(regexp)
查看>>
python爬虫之登录
查看>>
nginx的proxy_pass路径转发规则最后带/问题
查看>>