用UTF-8完全解决JSP+MYSQL多国语言文字编码问题

此问题这是本人经过数天努力,查遍网上所有此类文章最后自己解决的。转载请务必注明出处: http://blog.donews.com/ralix/

首先说明几点:

在文件中任何时候出现utf-8、UTF-8、utf8、UTF8其作用都是一样的。tomcat、resin、mysql可没有我们这么笨。网上许多文章还煞有介事的特别指出其一个个的区别,纯属无稽之谈。

我的软件环境:

中文WINDOWS XP (linux可作相应修改)

Apache Tomcat 5.5.6 Server

phpMyAdmin 2.6.4-pl4

MySQL 5.0.19-nt

按下面步骤修改:

一、在JSP静态文件中正确显示UTF-8:

1、JSP文件用支持UTF-8的文字编辑器编辑,如EditPlus、UltraEdit,并把原来ascii转换成utf-8(菜单里有)。

2、JSP文件头改成:

有无这句无所谓(但在.html文件中是必要的):

二、FORM的正确提交:

1、getParameter之前加入:

request.setCharacterEncoding("utf-8");

这一步也可以用Filter的办法,参见其它文章。

2、request时,只需要写成最简单的形式:

String name1= new String(request.getParameter("username"));

String pwd1= new String(request.getParameter("password"));

三、连接mysql:

1、mysql配置文件:

修改mysql在windows/my.ini里default-character-set=utf-8

2、mysql里数据库和表也都设为utf8_unicode_ci

3、数据库连结:jdbc:mysql://localhost/mydb?useUnicode=true&characterEncoding=utf-8

注意,关键就在于此:此句中间是'&'不是'&'在www.Jdon.com的banq和许多牛人的文章中都写成了'&'。这可能是发文章时html自动转化的。但这的确给我们带来了很大的麻烦。会产生如下错误或问号:

java.sql.SQLException: Syntax error or access violation, message from server: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''asdf' at line 1"

至此,在页面上显示中文、从数据库读取并显示、插入、修改中文都正常了。

并且由于是utf-8,您可以试一下,在form里同时输入中文、英文、日文、韩文,照样正常显示。

PS:

虽然没有完全测试过,但在我的使用中操作系统、JDK、TOMCAT或resin的编码对此问题没有造成影响。

我测试时resin初始化显示的JDK就是GBK、zh,但没有问题。

另外,.java文件是utf-8还是ascii编码都没有关系,生成的.class一样能用。

经楼下混沌朋友的提醒,我需要补充一下:

1、数据库连结时,在.jsp和.java文件中应该用&号,而XML文件中需要用& 这也是banq的本意。只是我们太菜没能直接领会。

2、在我的测试中,connector-J已经是3.0以上但如果不加useUnicode=true&characterEncoding=utf-8访问数据库还是会有问题。所以建议还是加上。

PS2:

对用GET提交的中文问题,修改tomcat/conf/server.xml

最后加入:URIEncoding='utf-8'

附注:

使用MySQL官方推出的Administrator可以方便地设置mysql的缺省字符集。

使用4.1以上版MySQL和3.0以上版connector-J可以不用写?useUnicode=true&characterEncoding=utf-8。

useUnicode和charactorEncoding这两个参数的说明在connector-J的文档中有。

&和&的使用场合不同,了解了xml就好了。

标签:

用utf-8完全解决jsp mysql多国语言文字编码问题_用UTF-8完全解决JSP+MYSQL多国语言文字编码问题...相关推荐

  1. mysql内连接运算量会增加多少_新年手打,40道经典MYSQL面试干货,速来收藏

    MySQL 面试题 1.MySQL 中有哪几种锁? 1.表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最 高,并发度最低. 2.行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发 ...

  2. 在mysql中创建表的命令行_如何在命令行创建一个MySQL数据库

    展开全部 第一步:安装MySQL客户端 当然你得确保MySQL客户端已经安装完毕.如果没有的话,可以按62616964757a686964616fe59b9ee7ad9431333339653663照 ...

  3. mysql 自增 不是主键_程序员经典面试题,MySQL自增主键为什么不连续

    在我们日常使用Mysql中,如果不是特殊的业务需要,一般我们都会使用自增主键,自增主键的好处可以在插入的时候尽量地减少页分割,增加Mysql的写入效率.我们有时候就会发现,自增主键并不是连续递增的,为 ...

  4. mysql把用户权限授予新用户_如何创建新用户和授予MySQL中的权限

    什么是红色表示 用户需要输入或定制的生产线将在红色在本教程! 其余的应该主要是复制和粘贴. 关于MySQL MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据. 它有多种选项来授予 ...

  5. mysql某字段值转成大写_获取字段值,并使用MySQL将其转换为大写

    让我们首先创建一个表-mysql> create table DemoTable1897 ( Name varchar(20) ); 使用插入命令在表中插入一些记录-mysql> inse ...

  6. mysql命令远程连接cmd命令行_如何从Windows命令提示符连接到mysql命令行

    如何从Windows命令提示符连接到mysql命令行 我正在尝试从Windows提示符下连接到mysql服务器命令行 我在cmd中写下一行,但出现错误. cd C:\MYSQL\bin\ 然后我执行 ...

  7. pymysq向mysql写数据 为什么本地无法查看_从运维角度浅谈MySQL数据库优化,中小企业DBA必会...

    原文:http://www.enmotech.com/web/detail/1/712/1.html(复制链接,打开浏览器即可查看原文) 作者:搬砖游击队 一个成熟的数据库架构并不是一开始设计就具备高 ...

  8. mysql项目酒店管理博客园_项目中常用的19条MySQL优化

    在写文章之前,首先感谢 飞友科技 陆老师提供的文档.. 声明一下:下面的优化方案都是基于 " Mysql-索引-BTree类型 " 的 一.EXPLAIN 做MySQL优化,我们要 ...

  9. mysql会对同时读取加锁吗_程序员经典面试题,MySQL并发读写的时候,都是需要加锁的么?...

    这是一道经典的程序员面试题,在Mysql中,如果有多个事务同时访问同一行数据,那么需要加锁么?我们都知道,在Mysql中有行锁,如果有多个事务同时修改同一行数据,那么需要加锁来防止并发问题.那么,如果 ...

  10. mysql向表中填入数据_教你快速掌握如何向MySQL的表中录入数据

    当我们建好数据库及表后,首先想到的就是向数据库的表中输入数据.下面我们就来探讨一下如何向数据库增加数据: 1.常用的方法是insert语句 以下为引用的内容: insert into tablenam ...

最新文章

  1. show-busy-java-threads查找CPU占用高
  2. 超简单破解网页加密源代码
  3. LockSupport 使用
  4. Windows 10体验:文件资源管理器变成了首页
  5. java hook 和反射_Java反射与hook混用反射某支付的方法
  6. Linux之判断socket是否断开
  7. 用 Lucene 构建文档数据库
  8. 《数据库原理MySQL》第三次上机实验
  9. 二叉树(知道中序遍历和后序遍历得到先序遍历)
  10. 鼠标经过时改变DIV背景颜色的三种途径
  11. MSSQL 2000 不支持top 解决方法
  12. gis 大屏_大屏简介
  13. 入门vue+springboot项目
  14. php 应用截图,PHP应用:php使用CutyCapt实现网页截图保存的方法
  15. error C2678
  16. 亚马逊运营怎么做广告?六大方法!
  17. realmeq参数配置详情_realmeq参数配置-realmeq手机性能规格详情
  18. 不积硅步 无以至千里
  19. win2K3安装sql2000提示“安装程序配置服务器失败”的常见解决办法
  20. jQuery(入门选择器)

热门文章

  1. mysql 枚举 enum用法_mysql中的枚举类型ENUM的用法:
  2. Juniper SRX 简单命令一
  3. 领域驱动设计(3) DDD设计流程
  4. editplus配置java快捷键,editplus快捷键大全
  5. 【基于Android聊天软件开发-哔哩哔哩】 https://b23.tv/109B82i
  6. 小米10pro至尊版续航能力
  7. Matlab filter2的用法
  8. Vue项目中使用Svg矢量图标
  9. contentType几种类型
  10. PHP程序员创业的正确打开方式