提出的问题:中文编码的图片资源无法在网页上显示。(//这里,建议使用英文命名,但是有时不可避免的出现比如用户播放固定音乐,中文名称的音乐不能播放的问题。)
思考过程:
1、图片是否由工作空间发布到服务器上?
排除方法:在服务器的工作路径上直接找到该资源,存在。
2、引用路径的问题。
绝对路径和相对路径是否正确。
src,forward(),sendRedirect(),对于路径的定义不同。
排除方法:在浏览器上得到无法显示的图片的路径,输入到浏览器上,看浏览器是否能够得到该资源。
答案是,无法显示该中文名称的资源。
3、编码问题。编码问题目前我能想到的有:
- 静态的meta标签控制的Content-Type。
- JSP里page命令里的第一阶段会用的pageEncoding。
- JSP将java编译为class的第二阶段。
- JSP第三阶段由Tomcat传回浏览器的网页, 用的contentType。
- 还有Tomcat的内部server.xml对中文的配置。
- 当然还有三种不可能在次出现的中文编码问题,数据库交互的编码问题和servlet中request和response的编码设置,以及为eclipse中的文件设置默认编码的问题。
排除方法:将jsp文件改为html文件,删除JSP的page命令,运行,可以显示中文命名的照片。这样排除了a可能。
同时,在排除方法二里,我们直接访问的该中文资源,没有经过JSP文件,却没有显示该资源,排除b,c,d,f的可能。缩小范围为e可能。
4、理一下我们访问该资源的过程。
浏览器处理我们的URL请求,将请求发给服务器,服务器处理资源,再将处理好的资源返回给我们。
这里有三个编码阶段,第一阶段客户端(即浏览器)向服务器传输过程中的编码,包括服务器在接受时的编码,第二
阶段是服务器处理java文件时的编码问题,包括JSP转化为servlet等,第三阶段服务器向客户端传输数据时的编码。
(未完待续)