Welcome 微信登录

首页 / 数据库 / MySQL / Linux平台中MySQL的JDBC中文问题解决

除了众所周知的中文问题之外,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应用在“只读状态”下一切都显得那么的正常,直到你在尝试提交表单的时候,该问题才暴露出来。 解决的办法是用“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中,用“:”转义序列表示一个“:”是可选的,也就是说很多时候,你可以混用这两个格式。 Ubuntu 7.10中安装Oracle 10.2.0 企业版过程UbuntuLinux下关于adodb的问题相关资讯      linux mysql 
  • Linux下MySQL的简单操作笔记  (08/12/2015 10:50:28)
  • Linux下MySQL报Table "xxx" doesn"  (11/22/2014 07:37:47)
  • Linux下解决MySQL无法远程连接问题  (11/14/2013 07:18:33)
  • Linux开启MySQL远程连接  (11/22/2014 07:40:48)
  • Linux系统MySQL数据库远程设置  (01/10/2014 09:35:35)
  • Linux网站架构系列之MySQL----部署  (11/06/2013 20:21:28)
本文评论 查看全部评论 (0)
表情: 姓名: 字数