您的位置:首页 > Web前端 > JavaScript

jsp中文乱码处理问题

2010-11-05 09:53 302 查看
其实,java系统内部会把全部的字符串统一使用UTF-8编码,而在内部转化之前会使用操作系统默认的编码,其中包括输入和输出。要想不乱码,只需要
“统一java系统的输入、输出以及操作系统的字符集”,这也是处理java系统汉字的一个原则。原因是由于java的跨平台特性,字符集必须由具体的操
作系统给出。

由此可以得到一个最简单的解决jsp乱码的办法,其中主要需要把握三个环节:

1、开发和编译代码时就指定一个字符集,比如ISO-8859-1(西方的系统多数使用这个)

2、确定操作系统的字符集跟1统一,比如也用ISO-8859-1,这样的OS有很多,linux就是啦

3、如果开发jsp,每个页面都明确指定字符集:

<%@ page contentType="text/html;charSet=ISO8859-1" %>

这样就达到了前面的目标,统一了三者的字符编码。

这样的系统虽然很好,没有乱码问题,但是显然是以破坏跨平台特性为代价换取来的。想要根本解决问题,看来只有将java系统统一为UTF-8编码,这需要找到所有的出入口。

具体需要注意以下几个环节:

1、开发和编译时候指定字符集为UTF-8

2、用过滤器将所有请求转为UTF-8字符集编码

如果是用一个servlet控制分配的就在servlet的filter中写

request.setCharacterEncoding("UTF-8")

如果是用jsp页面,就在头部定义

<%@ page contentType="text/html;charSet=UTF-8" %>

3、在所有的输出上包括数据库连接上都指定使用字符集UTF-8

另外:如果你在做二次开放,就需要重新编译包,指定使用UTF-8编码

附:在编译时指定字符集的语法是javac -encoding <encoding> <sourcefile>

说明:这里很多观点是引用他人的,但是我自己使用过,是绝对有效的解决办法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: