浏览 10948 次
锁定老帖子 主题:JSP开发 wap页面编码问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-17
最后修改:2009-06-22
<%@ page contentType="text/vnd.wap.wml;charset=utf-8" %> <% response.setContentType("text/vnd.wap.wml;charset=utf-8");%> <?xml version="1.0" ?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card id="test2" title="汉字接收"> <% request.setCharacterEncoding("utf-8"); String name=request.getParameter("name"); String id=request.getParameter("id"); %> <p>姓名:<%=name%></p> <p>id:<%=id%></p> <do type="prev" label="返回上页"> <prev/> </do> </card> </wml> 刚学J2ME,想做个小的手机博客,自己玩玩,随便弄了个页面竟然一堆乱码? tomcat 和 Nokia Mobile Browser 4.0都是默认设置。 我的操作步骤: 1. 直接用记事本编辑的保存上面的代码,在Nokia Mobile Browser 4.0中 汉字 显示 全是乱码。效果如下: 2. 把上面的代码另存为utf-8的编码(记事本默认的是ANSI), 在Nokia Mobile Browser 4.0中,仅仅是“姓名”显示的是乱码,其他的汉字显示正常, 效果如下: 3. 把代码另存为 unicode 的编码, 显示的如下错误: 4. 把<%@ page contentType="text/vnd.wap.wml;charset=utf-8" %>改为 charset="gb2312",页面默认的保存编码ANSI,效果通2一样。 5. 把<%@ page contentType="text/vnd.wap.wml;charset=utf-8" %>改为 charset="gb2312",页面默认的保存编码utf-8,效果如下: 6. 删除<% response.setContentType("text/vnd.wap.wml;charset=utf-8");%>这一语句,同时<%@ page contentType="text/vnd.wap.wml;charset=utf-8" %>改为 charset="gb2312",出现如下错误: 为什么会出现这种情况,我实在搞得晕晕乎乎了。 我的理解是: charset=utf-8用来设置页面的显示编码; pageEncoding="utf-8"用来设置对文件的读取应采用的编码; response.setContentType("text/vnd.wap.wml;charset=utf-8");用来设置服务器响应的告诉浏览器应该按照什么样的编码显示; request.setCharacterEncoding("utf-8");用来设置参数传递的URL编码。 Qusetion: 1。 Tomcat以什么编码读取我的文件。 2。 Tomcat读取我的jsp文件有用什么编码生成java 文件,接着又以什么编码生成和读取类似servlet的class文件。 3。 怎样才能正确的显示。 再网上查了半天,都发现不能解决我的问题,我主要想了解一下程序再运行过程中的编码与解码过程。 有会的帮给讲解下。谢谢! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-06-19
这个不是程序的问题,是tomcat的配置问题,需要在server.xml对编码进行配置,在server.xml里找到 <Connector port="8080"节点(你启动tomcat的端口的那个),给这个节点增加URIEncoding="utf-8"属性即可。
|
|
返回顶楼 | |
发表时间:2009-06-19
最后修改:2009-06-19
sharong 写道 这个不是程序的问题,是tomcat的配置问题,需要在server.xml对编码进行配置,在server.xml里找到 <Connector port="8080"节点(你启动tomcat的端口的那个),给这个节点增加URIEncoding="utf-8"属性即可。 非常感谢你的回复! 我看了Tomcat默认server.xml里的connector里面就有URIEncoding="utf-8",它的作用似乎是告诉Tomcat解码URL时采用的编码,应该和页面内容没有关系吧。 |
|
返回顶楼 | |
发表时间:2009-06-19
我做了很多的测试,觉得应该是模拟器的问题,不知道是不是Nokia Mobile Browser 4.0对中文显示不支持?但为什么又对title上面和导航那显示又是正常的呢
|
|
返回顶楼 | |
发表时间:2009-06-19
奇怪了 那你在试试gbk呢~!
|
|
返回顶楼 | |
发表时间:2009-06-19
最后修改:2009-06-19
whaosoft 写道 奇怪了 那你在试试gbk呢~! 把URIEncoding="utf-8"改成gbk吗?也没有用。 而且如果在实际项目中的话不会让修改服务器的配置文件server.xml的。 我看了下Diagnostics的结果,如图: 可以看到服务器response的是UTF-8编码的数据。可以肯定是Nokia Mobile Browser的问题。不知道大家有没有遇到这个问题?是怎么解决的呢? |
|
返回顶楼 | |
发表时间:2009-06-20
有阵子没接触这些了,有点忘了~
URIEncoding这个地方应该不是造成乱码的原因.是url的编码,也就是get方式的参数 你尝试使用opera试试,如果使用utf8编码方式,有问题,那么看一下opera的编码方式,如果还有问题,可以使用firefox,将页面源码打开查看,是否乱码,这样就可以确定是不是浏览器的问题 |
|
返回顶楼 | |
发表时间:2009-06-20
dongjq 写道 有阵子没接触这些了,有点忘了~URIEncoding这个地方应该不是造成乱码的原因.是url的编码,也就是get方式的参数你尝试使用opera试试,如果使用utf8编码方式,有问题,那么看一下opera的编码方式,如果还有问题,可以使用firefox,将页面源码打开查看,是否乱码,这样就可以确定是不是浏览器的问题 非常感谢你的指导,我一会试下。 |
|
返回顶楼 | |
发表时间:2009-06-22
最后修改:2009-06-22
经 dongjq 的指点,对步骤2 用opera测试了下,发现没有问题。
截图如下: 可以确定是Nokia 模拟器内置的浏览器问题。 感谢大家的回复, 关于Tomcat读取页面,解释页面的整个流程的编码与解码问题,我google了很多文章, 基本上已经明白了。过几天将开博文详细讲解下这个过程。 感兴趣的请关注博客! |
|
返回顶楼 | |
发表时间:2009-06-23
最后修改:2009-06-23
你没有使用 pageEncoding="utf-8"
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %> 1. jsp文件使用utf-8保存 保证源文件按照正确的编码保存 2. 设置 pageEncoding 保证容器编译jsp时使用正确的编码 3. 设置 contentType 保证浏览器拿到 response 后按照正确的编码解码 另外注意这个 <?xml version="1.0" encoding="UTF-8" ?> |
|
返回顶楼 | |