jsp sql 查询中文时无效,英文正常

11 篇文章 0 订阅

连接数据库使用下列格式的字符串:

jdbc:mysql://127.0.0.1:3306/dbname?useUnicode=true&characterEncoding=UTF-8&user=test&password=111

dbname为数据库,

test为用户名,

111为密码

characterEncoding=UTF-8 为其编码

其中characterEncoding=UTF-8的添加解决了jsp 中sql 查询中文时无效,英文正常的问题。



----------------------------------------------------------------------------------------------------------------------------------------------------------------

url中useUnicode=true&characterEncoding=UTF-8 的作用

http://blog.csdn.net/afgasdg/article/details/6941712

添加的作用是:指定字符的编码、解码格式。

             例如:mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码。这时候如果添加了useUnicode=true&characterEncoding=UTF-8 ,那么作用有如下两个方面:

1. 存数据时:

     数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。

2.取数据时:

     在从数据库中取数据的时候,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新UTF-8格式编码数据,最后再将数据返回给客户端。

注意:在xml配置文件中配置数据库utl时,要使用&的转义字符也就是&

      例如:<property name="url" value="jdbc:mysql://localhost:3306/email?useUnicode=true&amp;characterEncoding=UTF-8" />


----------------------------------------------------------------------------------------------------------------------------------------------------------------

http://www.cnblogs.com/stansonwilliam/archive/2012/10/28/2743203.html

中文乱码似乎是程序编写中永恒的一个话题和难点,就比如MySQL存取中文乱码,但我想做任何事情,都要有个思路才行,有了思路才知道如何去解决问题,否则,即使一时解决了问题,但过后不久又碰到同样的问题可能又会急得抓狂,MySQL中文乱码问题就是如此。

仅仅对MySQL中文乱码的解决而言,我认为主要的一个原则可以归结为五个字:“编码一致性”,只要遵循了这个原则,那么中文乱码就不难解决,那么何为“编码一致性”呢?子猴总结为有如下四个方面的编码必须保持一致,才能防止中文的乱码,下面将具体讲解。

首先我要设定的编码为UTF8,为何要设定UTF8编码呢?那是因为这是通用编码,像中国通常使用的GBK、GB2312、Big5等只是针对中文而言,但是对其他文字就不适用了,为了使得这个问题的解决具有文字编码通用性,所以我这里设定了UTF8这个编码。

编码一致性涉及到的四个方面为:应用程序编码、数据库系统编码、数据库编码、应用程序与数据库系统的连接编码。

1、  应用程序编码

指的是你在程序文件中的文字编码,以jsp文件为例来说明,就是你jsp的网页编码,比如:

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

在这样的页面中,往往是调用数据库接口对数据库进行存取操作。

2、  与之对应的数据库系统编码

数据库系统就是你所用的MySQL(及其他数据库系统),数据库系统的编码要与应用程序编码一致,其编码设置根据操作系统的不同可以通过以下方式设置

2.1、Windosw环境下的MySQL编码设置

A、中止MySQL服务
B、在MySQL的安装目录下找到my.ini,如果没有就把my-medium.ini复制为一个my.ini即可
C、打开my.ini以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭
D、启动MySQL服务

(注:Windows环境下的设置我没有验证过)

2.2、Linux环境下的MySQL编码设置

首先我们登录到mysql,执行:show variables like ‘character%’;来查看数据库系统当前的编码方式,一般情况下,你会看到如下所示:

+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+

也就是默认编码都是latin1,很显然,我们要修改为UTF8。

通过:vi /etc/mysql/my.cnf修改my.cnf文件,这里需要注意的是,如果my.cnf文件不存在,则进入到mysql的安装目录,通过执行:cp share/mysql/my-large.cnf /etc/my.cnf生成my.cnf文件。

加入的内容如下:

在客户端配置[client]下面添加:

### 默认字符集为utf8
default-character-set=utf8

找到[mysqld]部分,在下面添加:

### 默认字符集为utf8
default-character-set=utf8
### (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)
init_connect=’SET NAMES utf8′

完毕后重启mysql服务,然后再通过执行show variables like ‘character%’;查看如下:

mysql> show variables like ‘character%’;

+————————–+—————————-+

| Variable_name            | Value                      |

+————————–+—————————-+

| character_set_client     | utf8                       |

| character_set_connection | utf8                       |

| character_set_database   | utf8                       |

| character_set_filesystem | binary                     |

| character_set_results    | utf8                       |

| character_set_server     | utf8                       |

| character_set_system     | utf8                       |

| character_sets_dir       | /usr/share/mysql/charsets/ |

+————————–+—————————-+

3、  数据库编码

改完数据库系统编码后,接下来轮到数据库编码了,请注意数据库系统与数据库的区别,数据库指的是你所创建的数据库Database及所包含的表,数据库编码设置很简单,在创建数据表的时候设置,举例如下:

create table Test

(

ID                   integer not null auto_increment,

NAME                 varchar(50) comment ‘测试字段’,

TYPE                 integer,

primary key (ID)

)

default charset utf8;

其中default charset utf8就表示此表的字符编码为utf8。

4、  应用程序与数据库系统的连接编码

连接编码相当于应用程序与数据库系统的沟通桥梁,同样也需要设置编码,我们以JDBC的连接语句来予以说明:

jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&amp;characterEncoding=UTF-8&amp;user=test&amp;password=111

上面的语句中为一个test的数据库,用户名为test,密码为111的数据库连接,其编码为characterEncoding=UTF-8。

通过以上四个方面的设置,那么mysql的中文乱码就轻松解决了!

如果你过段时间不记得mysql的中文乱码是如何解决的,那么你只要知道以上的解决思路,我想解决起来肯定会很快的。

转自http://www.zihou.me/html/2010/06/07/2245.html

如果这一切都设置无误,就要思考程序本身的问题了,如果页面传入数据库本身的就是乱码,那么就是程序的问题了,仔细核对,果然,问题出现在Servlet的处理上,添加以下语句问题成功解决。

req.setCharacterEncoding("utf-8");


-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自己写的数据库装载工具,平工作中用于装载大文本文件到数据库表,也能直接装载excel,不过excel只能使用第一个sheet,且不支持合并的单元格。 jdk要求版本1.6及以上。 使用方法: java -jar lynload.jar,即可看到中文命令行参数(unix下需设置gbk字符集环境才能看中文,没gbk环境不能中文,但不影响导入数据)。 特色: 1.同支持多个数据库. 2.支持任意字符串作为列分隔符,什么竖线逗号或者十六进制字符及任意组合字符串都行 3.支持任意字符串作为每行分隔符,例如\r,\r\n,或者十六进制字符或任意指定的字符串(例如可实现把整个日志文件装入数据库的单个clob字段). 4.支持任意大小的文本,装入几十GB都试过没问题。 5.明确到每一行的错误信息.(装载会生成一个.err文件,里面有装载出错的每一行错误原因(少字段还是格式不符合要求等等)。 6.可以作为库使用在jsp等后台直接调用,将整个jar作为库,使用 OraLoad类的int ProcLoad(Connection in_conn, String args[])函数就可以实现类似功能了。例如 new OraLoad.ProcLoad( null, "-u test -p testpwd -i 127.0.0.1 -s ora10 -f test.txt -t tmp_test -c , -e gbk"); 具体参数如下: Usage: -db database type 1或者oracle, oracle数据库,不区分大小写,默认1,需java1.5及以上版本 2或者sqlserver, mssqlserver数据库,不区分大小写,需java1.6及以上版本 3或者mysql, mysql数据库,不区分大小写,需java1.5及以上版本 4或者sybase, sybase数据库,不区分大小写(暂未测试) -url 数据库连接的url.默认空字符串 如果有url参数,则-i-p-s-dn参数全无效。 如果没有url参数,则必须提供-i-p-s参数,程序里面好拼凑url 例如: jdbc:sqlserver://localhost:1433; DatabaseName=sample -i ip address:port ip地址和端口,中间用冒号隔开 url不为空则此参数无效 如果不带端口,系统根据数据库类型采用默认端口 oracle数据库: 默认为1521端口 sqlserver数据库: 默认为1433端口 mysql数据库: 默认为3306端口 sybase数据库: 默认为5000端口 例如: 127.0.0.1:1521 例如: 192.168.0.1 -s serviceid or database name oracle服务名或者其他数据库的数据库名 url不为空则此参数无效 -u username 用户名,必输 -p Password 登录密码,必输 -t TableName 要插入的表名,可以带用户,必输 例如: scott.emp 或者 emp都行 -f FileName 来源的文件名,必输 -ff FileName format 来源的文件名类型:txt,文本文件;xls:Excel2003或2007文件),默认是txt 对于Excel文件的导入,仅导入第一个sheet的内容,其他sheet的内容忽略 -e Encoding 文件的编码,默认gbk -c Cut split string 分隔字符串,可以是多个字符组合,默认竖线 -r commit rows 每插入多少行提交一次,-1表示不提交,默认-1,如果设置了ac参数为1,则此参数无效。 注意:如果设置了此参数,每到此行数会执行一次commit,如果是外部调用此过程要注意所有数据会被提交 -ac all commit 0.插入成功的都提交,失败的登记文本,默认0; 1.全部插入成功后才提交(有失败则回滚并结束) -a column flag 第一行的类型 0.没有列名行,默认0。此值为0则it参数不生效。 1.第一行是逗号分隔的包括列类型的列信息,例如NAME VARCHAR2(30),注意,区分大小写 2.第一行是列分隔符分隔的列名(不包括列字段信息),注意,列名区分大小写 -it insert type 1.导入的列需要跟数据库列名个数及名称完全相同,顺序无所谓,默认1 2.仅导入文件字段名与数据库字段名完全相同的数据,顺序无所谓 3.第一行是列信息,按此列信息创建新表导入数据(暂不用) 4.忽略第一行,无论第一行是什么数据全部忽略,从第二行按列字段顺序匹配装载 必须在-a 参数 > 0才生效,否则无意义 -d date formate 日期格式,参考java的SimpleDateFormate类参数,默认自动识别 可识别格式:yyyyMMdd, yyyy-MM-dd, yyyy/MM/dd, yyyyMMdd:HHmmss(等于oracle的yyyymmdd:hh24miss) yyyy年,MM月,dd日,HH 24小,hh 12小,mm 分, ss秒 -l line end string 每条记录结尾的分隔符,默认是 \r\n回车换行符,支持前面-c参数说的转义符 oracle例子: 登陆scott用户,裝载a.txt的逗号分隔的gbk编码文本内容到scott.emp java -jar xxx.jar -i 127.0.0.1 -p 1521 -s ora10 -u system -p manager -t scott.emp -f a.txt -c , sqlserver例子: 登陆11.8.126.181数据库的test用户,裝载f: est.xlsx的excel数据到tmp_i表 java -jar -db sqlserver -i 11.8.126.181 -s abcd -u test -w test -f f: est.xlsx -t tmp_i -ff xls mysql例子: 登陆本机数据库的root用户,裝载a.txt的文本数据到tmp_i表,不提交 java -jar xxx.jar -db mysql -i 127.0.0.1 -s gjjgj -u root -w root -f a.txt -t tmp_i
JspRun!- 最棒的免费的开源Java社区软件系统 JspRun!论坛软件系统简介 论坛软件系统亦称电子公告板(BBS)系统,它伴随社区BBS的流行而成为互联网最重要的应用之一,也逐渐成为网站核心竞争力的标志性体现。2006年7月 CNNIC 发布的最新统计表明,43.2% 的中国网民经常使用论坛/BBS/讨论组,论坛社区应用首次超过即通讯 IM ,成为仅次于收发Email的互联网基本应用。 JspRun!是飞速创想(北京)科技有限公司推出的一套通用的社区论坛软件系统,用户可以在不需要任何编程的基础上,通过简单的设置和安装,在互联网上搭建起具备完善功能、很强负载能力和可高度定制的论坛服务。JspRun! 的基础架构采用世界上最先进流行的 web 编程组合 JAVA MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同保证了软件的质量使其更具有鲁棒性和可维护性。 JspRun! 开发组具有丰富的 web 应用程序设计经验,尤其在论坛产品及相关领域,经过长期创新性开发,掌握了一整套从算法,数据结构到产品安全性方面的领先技术。使得 JspRun! 无论在稳定性,负载能力,安全保障等方面都居于国内外同类产品领先地位。 2009年4月23日更新内容部分列表 修复功能 1、修复了非法请求资源 2、修复了jsp脚本在一些特殊条件下会产生一个以上的实例,造成脚本执行不同步 3、修复了jsp脚本下次执行间错误 4、修复了上传附件数组越界,附件来路检查无效,附件下载付费功能无效,下载附件扣除积分错误 5、修复了上传附件的存放路径动态获取 6、修复了清空帖子回收站的没有删除远程附件 7、修复了查看短消息空指针异常及关键字搜索短消息无效 8、修复了生存缓存文件截取修改间异常 9、修复了禁止浏览器缓冲功能 10、修复了生成验证码的访问路径 11、修复了主题操作在某些条件下会出错 12、修复了个人空间显示效果,包括文集、昵称、收藏版块、主题图标等 13、修复了上传图片如果图片是动画为该图片生成缩略图和水印图片 14、修复了在gbk项目下无法保存ftp密码的问题 15、修复了合并用户合并短消息异常 16、修复了主题自动关闭后仍可以回复的问题 17、修复了编辑主题缺少主题分类选项,显示信息类别的效果及不能预览远程附件服务器上的图片 18、修复了Archiver 功能在 URL 非静态化的条件下无法正常访问 19、修复了论坛会员个人设置无效 20、修复了jspruncode的html解析错乱,如table表格,img图片标签 21、修复了版主超版部分后台权限 22、修复了主题付费、附件付费无效的问题 23、修复了积分交易功能无效的问题 24、修复了Wap设置的页面错误、wap查看回帖的分页信息、wap发帖回帖乱码的问题 25、修复了新用户注册无法保存个性签名等若干bug 26、修复了三元运算符以兼容更多的web服务器(如jboss、resin等) 27、修复了广告数量不能整除无法显示广告的问题 28、修复了“系统错误记录”无法写入的问题 29、修复了后台操作中如果 session 过期重新登陆后出现循环跳转 30、修复了恶意访问后台权限判断,个人签名过滤恶意html代码的问题 31、修复了全文检索不精确 32、修复了如果域名中多一个"/"符,后台表情搜索失效 33、修复了注册生日输入特殊字符出错的问题 34、修复了删除会员组后计算会员组错误 35、修复了插件版权信息设置错误的问题 36、修复了用户设置界面风格后,第一次访问界面设置无效问题 37、修复了wap发帖回帖成功后今日发帖数不变的问题以及主题浏览无分页问题 38、修复了浏览帖子以及查看短消息内容解析特殊字符$出错的问题 39、更多细节问题的修复 优化功能 1、优化了页面缓存类及页面缓存生成方式 2、优化减少过滤器中的sql查询语句 3、优化减少版块帖子列表sql查询语句 4、优化个人空间 5、优化验证问答 6、优化快速编辑帖子的提交方式和帖子附件下载次数 7、优化搜索的排序方式 8、升级优化序列化类 9、优化统计功能 10、优化所有页面分页功能 11、优化首页,帖子列表,帖子浏览页面,大大减少页面大小,增加浏览速度,减少服务器访问流量 12、优化thread页面解析特殊代码,避免出现死循环, 13、更多细节方面的优化 新增功能 1、增加了远程附件服务器附件下载功能,可以最大限度减轻论坛服务器负担 2、增加了注册页面可添加广告 3、增加了更改访问端口号功能 4、增加了论坛插件功能 5、增加了商品发布功能(包括财付通功能、积分充值功能及相关的论坛交易功能) 6、增加了注册用户名中如含有'号则屏蔽该用户名

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值