作者JeremyJoung (J.J.)
看板java
标题Re: [JSP ] 输出中文的问题
时间Sat Oct 1 04:00:39 2011
TOMCAT request预设编码为latin7(? 至少不是latain1
resin预设编码为utf8
在server.xml的系统设定档中 <host>标签中有设定request预设编码的参数
另外
servlet编码 又是另外一回事 使用new String(getBytes(), )可以解决问题
但是 不是根本办法
另外 在java中 错误的编码会导致文字被抛弃 直接输出无法修复的"?"字元
所以万能的拉丁7其实或许是种安全的手段 因为任何byte都可以被表示 还可以事後救援
输入编码utf8 给予big5会获得一团? 完全不给救
这种问题我遇过 而且是没有源码的servlet 一整个就是哭出来
※ 引述《rexkimta (冷杉林)》之铭言:
: ※ 引述《rexkimta (冷杉林)》之铭言:
: : 虽然标题用jsp,但接下来提到的程式是用servlet做的。
: : 我的情况是:
: : 有个网页form.html中的form会传一个变数name给program这个servlet。
: : 如果name是中文的话,
: : 在program那里显示出来就会是乱码。
: : 在form.html的meta tag、
: : servlet response的header、
: : servlet 产生的html meta tag
: : 都有设定UTF-8,档案本身的编码也都设定成utf-8了。
: : 请问那里还可能有问题呢?
: : 注:只有变数有问题,其他中文字都没事。
: : 像是「小明」(%E5%B0%8F%E6%98%8E)会变成「å°? 」(後面变成问号了。)
: 找到一些网页,不过都没有解决问题……
: http://goo.gl/9jROz
: http://www.jguru.com/faq/view.jsp?EID=1030399
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.0.157
1F:→ joetsai:latin7有解??? 10/01 10:23
2F:→ JeremyJoung:拉丁的话 至少每个byte都可以被强制表示出来只是乱码 10/01 22:58
※ 编辑: JeremyJoung 来自: 59.120.0.157 (10/01 23:00)
3F:→ JeremyJoung:只要有乱码而不是"?" 就有机会使用getBytes()矫正 10/01 23:01
4F:推 joetsai:感谢 之前搞编码时快被搞死 下次有机位就用这招罗~ 10/02 01:05
5F:→ joetsai:另外那时候才发现 标准写法为UTF-8 小写也可以!! 但若写成 10/02 01:07
6F:→ joetsai:UTF8 或是 utf8 在某些情况下会乱码!!! 10/02 01:08
7F:→ JeremyJoung:某些伺服器对於大小写很敏感 甚至连include都要求同步 10/04 12:45