Linux平台中MySQL的JDBC中文问题解决

php中文网
发布: 2016-06-07 16:51:30
原创
1148人浏览过

除了众所周知的中文问题之外,Linux平台中的mysql实例可能遇到这样的问题: 你使用mysql5x版本并且配置数据库使用UTF-8字符集,你

除了众所周知的中文问题之外,Linux平台中的mysql实例可能遇到这样的问题:

你使用mysql5x版本并且配置数据库使用UTF-8字符集,你使用linux标准的jdk环境,你使用一个足够高的mysql jdbc driver,你使用UTF-8字符集做为J2EE的基本字符集。你使用了很标准的CharacterEncodingFilter完成透明的字符集转换。

这样,你在大多数情况下已经没有感受到中文问题对Java应用的干扰了,但偏偏在保存一个表单的时候发现中文被保存成了乱码或者问号。

究其原因,这是mysql驱动的一个已知的BUG,我没能找到(没去找)原始的BUG报告,但其大意为,jdbc driver可能没有能够正确识别jdbc url中的dash字符。

如果你为test数据库指定了默认的整理类型到“UTF-8”的话(例如 alter database test character set utf8;),往往从数据库中读取数据是能够自动采用正确的解码序列的,所以你的Java应用在“只读状态”下一切都显得那么的正常,直到你在尝试提交表单的时候,该问题才暴露出来。

Kuwebs企业网站管理系统3.1.5 UTF8
Kuwebs企业网站管理系统3.1.5 UTF8

酷纬企业网站管理系统Kuwebs是酷纬信息开发的为企业网站提供解决方案而开发的营销型网站系统。在线留言模块、常见问题模块、友情链接模块。前台采用DIV+CSS,遵循SEO标准。 1.支持中文、英文两种版本,后台可以在不同的环境下编辑中英文。 3.程序和界面分离,提供通用的PHP标准语法字段供前台调用,可以为不同的页面设置不同的风格。 5.支持google地图生成、自定义标题、自定义关键词、自定义描

Kuwebs企业网站管理系统3.1.5 UTF8 1
查看详情 Kuwebs企业网站管理系统3.1.5 UTF8

解决的办法是用“UTF8”替代URL中的“UTF-8”,避开上述的陷阱。

另外一个附加的问题,JDBC URL对参数的分隔是使用“&”字符而不是“&”字符,若是你在URL中写了“&”的话,同样会使得后面的参数不能正确应用到driver layer上。这个问题比较复杂,原因是你在不同位置书写URL的时候可能需要进行转义的:

1. 在xml文件中写URL的时候,应该加上&,原因是xml认为&是转义符的引导字符,因此你写user=root&password=xxx到xml中时,等价于在java源代码中写user=root&password=xxx。

2. 在properties文件中写URL的时候,&没有转义含义,因此这时候的URL和Java源代码中的URL格式基本一致。所谓的基本一致,涉及到另外一个特殊字符“:”,,在properties中,用“\:”转义序列表示一个“:”是可选的,也就是说很多时候,你可以混用这两个格式。 

linux

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号