3.redirectPort=“8443” URIEncoding=“UTF-8”/>
②编写过滤器Filter Java代码
1.2.import java.io.IOException;3.4.import javax.servlet.Filter;5.import javax.servlet.FilterChain;6.import javax.servlet.FilterConfig;7.import javax.servlet.ServletException;8.import javax.servlet.ServletRequest;9.import javax.servlet.ServletResponse;10.11.public class CharacterEncodingFilter implements Filter...{
http://58andy.sinaapp.com 12.13.@Override
14.public void destroy()...{ 15.} 16.17.@Override
18.public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException,ServletException { 19.request.setCharacterEncoding(“utf-8”);20.chain.doFilter(request, response);21.} 22.23.@Override
24.public void init(FilterConfig arg0)throws ServletException...{ 25.} 26.27.}
利用过滤器,把requst传递的中文参数都设成“UTF-8”编码。
③修改web.xml文件
打开项目里的web.xml文件,在前面加上如下代码: Xml代码
1.2.
3.characterEncoding
4.com.v512.example.CharacterEncodingFilter 5.
6.
7.characterEncoding 8./* 9.
注意其过滤的URL为“/*”,表示当前的request请求。为了使设置生效,重起tomcat。
㈢国际化资源文件乱码
http://58andy.sinaapp.com
①利用JDK的native2ascii工具进行编码转换
国际化问题,主要是为了处理文件在浏览器上的显示问题,还是以登录界面来说,比如在中文浏览器上,我们要看到中文显示,对应在英文浏览器上要显示英文。那么我们在登录那个界面处理上,就不能直接写上我们的“用户名”“密码”等标识了。就要用标记转换输出了,修改为: Html代码
1.2.
再者,打开项目下的资源配置文件ApplicationResources.properties,依据上面所写key值,设定成我们要的默认值(显示英文),比如 引用
#Resource for Parameter 'com.v512.example.struts.ApplicationResources #Project webexample2 example.login.username=username example.login.password=password
现在我们动手新建一个资源文件,让其能显示中文,直接Ctrl+C,Ctrl+V。改名为ApplicationResources_zh.properties,代码如下: 引用
#Resource for Parameter 'com.v512.example.struts.ApplicationResources #Project webexample2 example.login.username=用户名 example.login.password=密码
但保存,myeclipse会报错,这时我们需要修改资源文件的编码格式。Windons---->Preferences---->Content Type------>Text----->JavaPropertiesFile,把其Default encoding改为“utf-8”,按“update”更新。这样就能进行保存了。但是当我们进行验证会不是成功时,仍然给我们的是乱码。
不急,我们还得做一项任务,打开DOS窗口,CMD到资源文件所在目录,运用JDK的native2ascii工具把我们新建的资源文件改成另一个名字的资源文件,例如bank.properties。命令如下: 引用
>native2ascii-encoding gbk ApplicationResources_zh.properties bank.properties
http://58andy.sinaapp.com
打开bank.properties资源文件,自动生成的代码如下: 引用
#Generated by ResourceBundle Editor(http://eclipse-rbe.sourceforge.net)
example.login.username = u7528u6237u540D example.login.password = u5BC6u7801
然后在myeclipse窗口中,把原来新建ApplicationResources_zh.properties 删除,并把bank.properties改为ApplicationResources_zh.properties(为了方便记忆,管理)。然后重起tomcat或进行reload文件,我们发现乱码问题没有了。
②利用Eclipse ResourceBundle Editor插件工具
以上我们是利用了JDK的native2ascii工具来处理国际化问题,但在EC中,还有一种更方便的工具专门用来处理编辑java的资源文件国际化乱码问题,即Eclipse ResourceBundle Editor插件工具。安装了这个插件后,我们能进行方便的可视化资源文件编辑。推荐。
PHP乱码?Mysql乱码?怎么解决?
PHP乱码或者mysql乱码,多半是因为没有统一编码,要解决PHP/mysql乱码,只要做到三码合一即可.所谓三码,是指文件编码,页面编码声明和数据库字符集,要使用相同的编码,如全部为utf-8.怎么做到三码合一?下面以utf-8为例,说明如何统一编码.1.网页文件编码保存为utf-8无BOM
记事本,保存文件的时候选择“编码”为utf-8
editPlus,保存时选择“encoding”为utf-8
UEStudio保存时选择“格式”为utf-8无BOM
2.PHP页面内部使用header('Content-type : text/html;Charset=UTF-8');声明页面编码为utf-8
在html头部写入来声明页面编码为utf-8
3.PHP页面中连接数据库服务器后执行sql查询前使用以下代码先将字符集设置为utf-8 mysql_query('SET NAMES utf8');[或mysqli,具体代码这里不再写了]
4.创建数据表的时候将默认编码设置为utf8,将字符校对(callate)设置为utf8_general_ci CREATE TABLE IF NOT EXISTS `name`(....代码....)ENGINE InnoDB DEFAULT CHARSET utf8 COLLATE utf8_general_ci
做到这四点,相信你的网页和数据库不会再乱码.
phpmyadmin乱码问题____2012年12月6日 09:39:16
首先,如果你出现乱码,你一定baidu了文章,对于各种答案,肯定是头都大了,说的都差不多,却都不一样烦啊。问题叙述:
1,从网页提交数据库数据,在phpmyadmin上显示乱码,在网页输出是好的2,直接从数据库插入数据,但是输出到网页后是乱码
3,从网页提交数据库数据,在phpmyadmin上显示正确,但是网页输出是乱码。
对于乱码问题就这三种了吧!
今天我亲自试验了一下,下面公布我的结果(我用的是UTF-8,其他同理,UTF-8特别注意)
总述,乱码,原因,编码不一致,为什么?答曰:提交数据库的数据需要编码,数据库存储需要编码,从数据库提取的数据还需要编码。这三种编码需要一致!
首先,你要保证所有输出输入网页都有编码声明
或者
header(“Content-Type: text/html;charset=utf-8”);
header(“Content-Type: text/html;charset=utf-8”);
注意!这里是utf-8,不是utf8
其次,相应数据的编码整理应该为utf8_general_ci。
1、从网页提交数据库数据,在phpmyadmin上显示乱码,在网页输出是好的,说明提交的数据和数据库的编码不一样,提取数据的编码和提交数据的编码一样 A->B->A型
这你就懂了吧,A是提交和提取数据的编码,B是数据库存储用的编码。
修改方法: 如果你不是新手的话,数据库连接文件应该是单独的吧比如execut_dql()(供查询用)或者execut_dml()(供修改用),所有的语句应该都是通过这两个函数进行的所以在这两个函数里的第一行,先写上mysql_query(“SET NAMES 'utf8'”);注意!是utf8,不是utf-8
例如下面的(在mysql_query()你的SQL语句之前,全部 SET NAME 'utf8'一下)
mysql_query(“SET NAMES 'utf8'”);
$res=mysql_query($sql,$this->conn)ordie(mysql_error());
mysql_query(“SET NAMES 'utf8'”);$res=mysql_query($sql,$this->conn)or die(mysql_error());
其实,你把所以关于数据库查询、插入的语句前全部mysql_query(“SET NAMES 'utf8'”);后,乱码问题就已经解决了,不过你以前插入的数据要重新插入了。
2、直接从数据库插入数据,但是输出到网页后是乱码。B->A型
这个不用再说了吧,你把查询语句前先
mysql_query(“SET NAMES 'utf8'”);
//你的查询
之后刷新下就不是乱码了。
3、从网页提交数据库数据,在phpmyadmin上显示正确,但是网页输出是乱码。A->A->B型
同上,你把查询语句前先
mysql_query(“SET NAMES 'utf8'”);
之后刷新下就不是乱码了。
所以总结出,只要保证操作过程中,输入,存储,输出的字符编码一致,你想让他乱码都难