Struts2:中文乱码问题

1.中文乱码问题到处都有,因为编码格式一人一套,页面有页面编码格式,action有action编码格式,servlet有servlet编码格式,数据库有数据库编码格式,而且不同数据库还有不同的格式,五花八门,应有尽有。

如果网页要支持国际化,那字符编码格式只能是选择UTF-8,别的都不好使。而我们平时选择的中文编码格式一般是gb2312和gbk,因为这两个对中文支持性最好,尤其是gbk。

在开发一个WEB项目时,最好统一一种编码格式,比如统一为gb2312,那就不要在某些页面又用gbk,自己把自己弄乱了。

2.数据库,例如MySQL,它在创建数据库表的时候最容易出现字符编码的问题,因为它默认的是字符编码格式为latin1,用MySQL数据库搞开发的人应该都被它的一顿乱码乱晕过。在用MySQL创建数据库,创建数据库表时最好都特别指定编码格式,如下:

在MySQL那个黑不拉叽的窗口下执行

创建一个数据库xiaoqi

create database xiaoqi CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;

创建一个表user

create table users (
userId int not null primary key auto_increment,
userName varchar(20) not null,
userPassword varchar(20) not null,
userNickname varchar(20) not null
)TYPE = MYISAM CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;

是不是就这样呢,不是,麻烦着呢,在插入数据的时候还得指定:

先执行命令:set names 'gb2312';

然后再向表中插入中文信息:insert into user values (null,'xiaoqi','xiaoqi0101','小起');

想在这个黑窗口中查询表,也得保证执行过set names 'gb2312'命令,也就是说把中文信息扔到表里面去,和把中文信息从表里面提出来,都要执行set names 'gb2312',这里说的是在这个黑窗口中显示查询结果时需要这么设置。还有,这个窗口关掉后,再打开时,该命令效果消失...

有没有简单一点的方法,有,用MySQL管理工具来操作数据库,和使用SQL SERVER2000的查询分析器工具类似。MySQL管理工具里面有设置字符编码格式的地方,一次设置,终身使用,绝不反弹...

3.解决数据库的乱码问题后,我们就可以从数据库中取出中文信息并显示在页面中。但是,这只是提取数据库中已经存在的中文信息。想要通过页面往数据库中添加中文信息,现在还不行,Struts2框架提供了一个很简单的解决方法,那就是,在struts.xml文件中添加下述语句:

<constant name="struts.i18n.encoding" value="gb2312"/>

它的位置最好放在最前面,<struts></struts>根元素下面的第一位置。

4.上面的方法还只解决了post传值的乱码问题!什么意思呢,就是说当我们用post方法传送数据时没有中文乱码问题了,但是get方法传值还是有。

我们页面中的表单提交一般用的是post方法,如果不是用的这个方法,或者没有去指定method="post",那从现在开始养成尽量用post方法提交的习惯。

不过有时候没法设置成post传值,比如url超链接传值,例:<a href="aaaa.jsp?name=小起"></a>,这个时候,我们定义的什么过滤器都不好使,啥原因呢,因为过滤器不过滤get传值,而超链接是用get方法传值的,所有这个时候就得另外想办法,比如说在我们用的Tomcat的conf文件夹中找到server.xml,在该文件中找到<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />,打开该文件的时候尽量用编辑器,不要用什么破记事本,因为用记事本打开的话,里面一团黑,哪些地方是正文,哪些地方是注释可难分开。找到前面那句话,它里面定义的port参数就是我们的端口号8080,也就是说要改端口号也是在这句话里面改,现在我们要在里面添加一个参数URIEncoding="gb2312"。好了,现在get方法传值也是用gb2312编码了,真麻烦!

转自http://blog.csdn.net/nature_fly088/article/details/7749038

转载于:https://www.cnblogs.com/xhyper/p/3952269.html

Struts2 开发 编码问题汇总相关推荐

  1. 团队项目开发编码规范

    团队项目开发"编码规范"之一:概述 "程序员.程序员"顾名思义就是来编程序的人员.他们和一般工作人员是一样的,都需要合作,可能为了一个大型项目程序会有十人以上或 ...

  2. WEB GIS 开发基础概念汇总

    WEB GIS 开发基础概念汇总 文章目录 WEB GIS 开发基础概念汇总 1.基础概念 2.技术框架 2.1 常见技术概念汇总 2.2 思维导图(借用,感觉比较到位) 3.内网离线WEB GIS搭 ...

  3. 软件开发英语单词汇总

    软件开发英语单词汇总 A abstract 抽象的 abstract base class 抽象基类 abstract class 抽象类 abstraction 抽象.抽象物.抽象性 access ...

  4. 后端开发知识框架汇总

    后端开发知识框架汇总 Spring框架 Spring/Springboot/SpringMVC Spring ​ 其是一个引擎,众多衍生产品例如boot.security.jpa等等:但他们的基础都是 ...

  5. C#(Net)软件开发常用工具汇总,提高你的开发效率

    C#(Net)软件开发常用工具汇总,提高你的开发效率 写代码也要读书,爱全栈,更爱生活.每日更新原创IT编程技术及日常实用技术文章. 我们的目标是:玩得转服务器Web开发,搞得懂移动端,电脑客户端更是 ...

  6. java web编码详解_java web 开发 编码问题详解

    java web 开发 编码问题详解 浏览器 IE/FireFox ------------->Servlet容器-------------------------->显示页面 编码   ...

  7. 4.1 MyEclipse中搭建Struts2开发环境

    4.1 MyEclipse中搭建Struts2开发环境 (尊重劳动成果,转载请注明出处:http://blog.csdn.NET/qq_25827845/article/details/5320594 ...

  8. 团队项目开发编码规范之一:概述

    团队项目开发"编码规范"之一:概述 发布日期:2011年3月18日星期三作者:EricHu   勤能补拙.笨鸟先飞. "程序员.程序员"顾名思义就是来编程序的人 ...

  9. Android开发编码规范pdf文件下载

    Android开发编码规范.pdf文件下载 Android开发编码规范.pdf文件下载. 公司要求成立统一的开发流程和编码规范,希望每个人的编码一致,风格一致,这样有利于提高开发效率,于是我从网上整理 ...

最新文章

  1. mysql 去重con_python 爬虫 实现增量去重和定时爬取实例
  2. 转:Flutter Decoration背景设定(边框、圆角、阴影、形状、渐变、背景图像等)...
  3. python 内置模块:collections
  4. H265的国标PS流打包
  5. 口袋中的xmind如何添加优先等级图标
  6. VMware下Linux虚拟机无法连接网络
  7. 【读书笔记】《编写高效的JavaScript程序》
  8. mfc文字闪烁如何解决_男同胞福音!如何解决尿尿时最尴尬的难题?建议偷偷收藏(文字版)...
  9. 将input file的选择的文件清空的两种解决方案
  10. 洛谷P1134阶乘问题(数论,末尾0的个数变形,思维转换)
  11. python自动化运维平台下载_5、python自动化运维——集中化管理平台Ansible
  12. mac系统下设置eclipse的补全快捷键方法
  13. Win11 22H2怎么跳过联网和微软账户登录?
  14. 解决win7任务栏谷歌浏览器chrome图标丢失、异常空白的问题
  15. 前端失业 3个月,尝试接私单的感触
  16. 查询数据库表数据量大小
  17. 四元数AHRS姿态解算和IMU姿态解算分析
  18. 最新MDK软件安装包和芯片包及超详细图文教程来咯!!!
  19. Vue实现web端仿网易云音乐 完成大部分功能
  20. 《算法导论》第六章之堆和优先级队列相关算法C语言实现

热门文章

  1. 2022-2028年中国数控机床市场投资分析及前景预测报告(全卷)
  2. leetcode 1523. 在区间范围内统计奇数数目
  3. URP入门(学习整理)
  4. Android自定义View实现下拉刷新控件
  5. 最适合物联网LOT的开源数据库
  6. 【已解决】(新)西部数据移动硬盘插入,电脑无法识别盘符
  7. python使用正则表达式
  8. 2015湖南省赛 CSU 1783 :聊天止于呵呵(模拟)
  9. 银行汇票和本票的区别
  10. 技术分享——反病毒技术介绍与发展