关于字符的又一问题--已解决,与mysql有关
来源:互联网 发布:联通拨号软件 编辑:程序博客网 时间:2024/06/05 09:48
曾经以为自己对字符乱码很清楚了,今天又出现了一个问题。
先说说系统框架:struts2+hibernte3.3+sprint2.5,linux+resin+mysql
在我的电脑(windows)下没有问题,布到服务器后,出现问题。
问题:
1.从表单输入特殊汉字,比如“涅槃”,页面显示为“涅??”,但奇怪的是,数据库里数据正确。
2.将从数据库读到的??转换成字节,打印为63 63,而正确应为-104,-124
3.从表单输入“涅槃”搜索,结果为空。。搜索"涅%",却出现包括涅槃在内,以及没有涅字的一些数据。
疑问:
在哪一步出现了编码问题?为什么只针对特殊汉字?注字符集设置为GBK,理论上不应该出问题才是。
------------------------------------------------------------------------------------------------------------------------------------------------------
解决:首先先允许我大笑三声。高兴的!
问题1、2:
步骤1:使用java.sql里的类,连接、查找、得到ResultSet,取rs.getString(1).getBytes(),打印为63 63;
可知,与hibernate无关,但数据库里数据正确,应该是在取数据时,里某些内部操作造成。
步骤2:还是以面的ResultSet,使用rs.getBytes(),打印为-104,-124。。。。正确。。高兴
可知以字符流的形式可以正确读出。
然后查看了mysql的编码设置 与 我电脑上不同的有:
character_set_server与database=binary 我的为 latin1
有点意思了。我们知道MYSQL的输入,读出过程为
latin1--> latin1 --> binary binary --> latin1 --> latin1
client-->connection-->server 与 server-->connection-->client
应该是在server-->connection出现意外??
所以,心里有两个方法:
A。设置配置文件character_set_server=latin1-------------因为我没有服务器root权限,没有验证
B。将hibernate配置文件里相关字段类型由string改为binary ,java文件相关字段由string改为byte[],此方法验证正确
问题3:
出现搜索问题是因为mysql的缺陷,select语句改为 where binary btitle='涅%' 即可。。字段名前加上binary
- 关于字符的又一问题--已解决,与mysql有关
- C51中遇到一个有关data与xdata的问题,已解决
- 有关服务器拒绝phpMyAdmin连接的问题(已解决!)
- 关于.NET装不上的问题已解决
- 关于已购经济适用住房上市出售有关问题的通知
- MySQL与NULL值有关的问题
- 关于MySQL数据库连接超时问题的分析与解决
- Ibatis在mysql中获得主键与连接池技术合并的又一问题
- 有关方法返回一个很奇怪的问题 - 问题已解决(转载)
- hibernate+struts+mysql有关utf8乱码问题的解决。
- 有关字符溢出的问题
- 关于chm无法显示的问题(已解决)
- 关于weblogic apache 的页面跳转问题(已解决)
- 关于listview滚动不停getView()的问题~~已解决~
- 关于“超时时间已到”的问题,终于解决了
- 关于JSP 调用 OCX的问题【已解决】
- 关于51822连接jlink的奇怪问题[已解决]
- MySQL排序limit出现的问题(已解决)
- C/S通信,实现多重及时连接通信
- 有了自己的CSDN.NET 学习空间
- 2011 考研
- 读《算法之道》有感
- 动态生成列
- 关于字符的又一问题--已解决,与mysql有关
- 第一天
- go语言编程在windows下开发环境配置(图文)
- 图片轮流转换
- 老师,您一路平安
- 键盘上每个键作用!!! (史上最全的【转】)
- 2010-6-10
- 一些单链表的东西
- 类模板函数分开定义