- 浏览: 53019 次
- 性别:
- 来自: 湖南
最新评论
唉,看到网上这么多的关于MySQL中文编码的问题。今天自己碰到了,网上没有找到我的完整答案,发现真的是好晕啊!~
不过幸好弄出来了,没有让整个下午的时候白费哦。
就今天所看到的,和自己所操作的一起总结下哦。
我用的工具有:
MyEclipse 5.1.0
JDK 1.6.0
mysql - connection - java - 3.0 . 2
MySQL 5.0 . 27
JDK 1.6.0
mysql - connection - java - 3.0 . 2
MySQL 5.0 . 27
这里工具的版本是很重要的,呆会一点一点把它讲来,所以把全部环境都列出来了!~
1、data too long for column问题
问题描述:在MySQL下面输入select, insert等SQL语句,对于汉字均出现此种情况
字段为char或varchar型,长度为255,绝对不会是真的字段长度不够的问题。请大家查看这篇贴子:http://blog.sina.com.cn/u/53b0d5dc0100097v,有此问题的详解。我后来的问题也基本上是在此篇基本上解决的。重要的是:--default-character-set=utf8参数
2、语句在MySQL CMD下面输入正确,但是在Java中执行同样的SQL语句,却无法工作。
问题描述:如果SQL语句中带中文的话,就会出现下面的异常,
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 ''中? at line 1
"
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java: 1962 )
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java: 1163 )
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java: 1257 )
at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java: 1218 )
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java: 1962 )
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java: 1163 )
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java: 1257 )
at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java: 1218 )
进行好上面第一点的配置以后还是无济于事。
通过细心观察,总觉得不应该是MySQL的配置问题了,因为在MySQL CMD下面能够很正常地输入,所以怀疑是mysql connector的问题。
查阅了mysql connector的docs后,找到了一些内容:
All strings sent from the JDBC driver to the server are converted automatically from native Java Unicode form to the client character encoding, including all queries sent via Statement.execute(), Statement.executeUpdate(), Statement.executeQuery() as well as all PreparedStatement and CallableStatement parameters with the exclusion of parameters set using setBytes(), setBinaryStream(), setAsiiStream(), setUnicodeStream() and setBlob().
意思就是说:所有从JDBC驱动器到服务器的字符串都将会自动地从本地JAVA Unicode编码形式转换为客户端的字符编码。Prior to MySQL Server 4.1, Connector/J supported a single character encoding per connection, which could either be automatically detected from the server configuration, or could be configured by the user through the useUnicode and characterEncoding properties.
Starting with MySQL Server 4.1, Connector/J supports a single character encoding between client and server, and any number of character encodings for data returned by the server to the client in ResultSets.
在这里就涉及到了版本的问题:在MySQL 4.1以前的版本中,连接器对每一个connection支持单个的字符编码;而在MySQL 4.1开始以后的版本中,连接器在客户端和服务器端之间支持单个的字符编码。Starting with MySQL Server 4.1, Connector/J supports a single character encoding between client and server, and any number of character encodings for data returned by the server to the client in ResultSets.
重要的就是在这里了,不知道因为是什么原因,我的连接器客户端的编码总是与服务器的对接不上,因此在这里将采用手动指定客户端编码。如下所述:
To override the automatically-detected encoding on the client side, use the characterEncoding property in the URL used to connect to the server.
对于useUnicode和characterEncoding两个连接属性,下面介绍一点点:
useUnicode | Should the driver use Unicode character encodings when handling strings? Should only be used when the driver can't determine the character set mapping, or you are trying to 'force' the driver to use a character set that MySQL either doesn't natively support (such as UTF-8), true/false, defaults to 'true' |
characterEncoding | If 'useUnicode' is set to true, what character encoding should the driver use when dealing with strings? (defaults is to 'autodetect') |
jdbc:mysql://localhost:3306/[DBName]","[username]","[password]" 改成为:jdbc:mysql://localhost:3306/[DBname]?useUnicode=true&characterEncoding=UTF-8","[username]","[password]"。
经过这样子的改动以后,程序能够正常地输入中文值或作为条件参数。
下面还有关于连接器的一点点内容:
To allow multiple character sets to be sent from the client, the "UTF-8" encoding should be used, either by configuring "utf8" as the default server character set, or by configuring the JDBC driver to use "UTF-8" through the characterEncoding property.
总结:
此问题可能还在其它地方有问题,但是到现在为止,中文不能出现在SQL语句中的问题已经解决。如果有网友能够有进一步地突破,还希望不吝指教。谢谢了!~ 当然,如果本篇有一些不足之处,也请指出哦!
发表评论
-
项目开发日志杂记
2009-05-04 13:05 975开发日志 0:32 2008-9-18 1、中文 ... -
笔记本维护故障一则
2007-03-18 23:40 714唉呀,今天真的是羞死 ... -
多Web服务器的80端口访问
2007-03-23 11:42 1475写这篇文章,源自于自己的一个需求。这几天一校园WEB站点因为域 ... -
[转]Windows系统文件详细解说
2007-04-02 23:38 630详细的介绍了WINDOWS系统文件的用途,我想各位保存一份以后 ... -
关于Windows文件共享服务的一些问题
2007-04-02 23:44 2518[问题引出]:我刚安装windows2003时,Compute ... -
MS Project 2003的一个问题
2007-04-03 18:04 1054[问题引出]:刚装完MS Project 2003,一运行就出 ... -
IBM xSeries服务器安装内存一则
2007-04-04 00:55 825部门进购IBM xSeries 225服务器已经达三年之久了, ... -
JAVA与蓝牙起步(Getting Started with Java and Bluetooth)
2007-04-26 00:39 1515栈初始化在你做任何事之前,你需要初始化你的栈。记住,栈是一个用 ... -
Windows 2000下的远程桌面工具
2007-04-28 18:10 1039在Windows XP之后的系统中都会在“系统”属性中可以设置 ... -
最近在看的书
2007-06-25 03:17 6591、JSP网络开发技术与整合应用 ... -
想看的书---<<开发自己的搜索引擎---Lucene 2.0 + Heritrix>>
2007-06-26 21:47 1734开发自己的搜索引擎---Lucene 2.0 + Heritr ... -
数据挖掘相关
2007-06-27 08:43 759什么是规则?就是一个条件和一个结果的和:If con ... -
不要用浏览器来测试
2007-07-03 11:02 922进行B/S系统编程,大概浏览器就是最直接的测试程序是否正确的方 ... -
Big-Endian And Little-Endian
2007-07-07 11:32 881今天老师给我们复习单片机,出了一个题目,就这个字节存储顺序搞得 ... -
[转]RAW FileSystem Recovery
2007-07-11 09:09 1003To know ho ... -
关于人工神经网络中的M-P模型的一点疑问
2007-08-08 22:31 958人工神经网络M-P模型构成一个逻辑非模型,从书中抄下来的,如下 ... -
JOONE(Java Object-Oriented Network Engine)使用初探
2007-09-30 16:03 12751 /**/ ... -
OpenGL in VC++
2008-01-19 00:30 1012首先看一个简单的例子: 1 #include <wind ... -
VC++中的ON_COMMAND_RANGE宏
2008-01-26 13:51 1789VC++中的ON_COMMAND_RANGE宏 ... -
[转] 软件企业以人为本的16项措施
2008-05-25 09:19 732软件企业以人为本的16项措施 ...
相关推荐
MySQL 中文乱码问题解决方法 MySQL 是一个功能强大且广泛应用的关系型数据库管理系统,但是,在使用 MySQL 时,用户经常会遇到中文乱码问题。今天,我们将讨论在 MySQL 中的中文乱码问题,并提供解决方法。 MySQL...
在MySQL中实现中文汉字转拼音的功能,主要是为了方便在数据库查询和数据分析时处理中文文本,尤其是在没有全文索引或者需要进行复杂模糊匹配时。以下是一个简单的实现方法,它利用自定义函数来完成这一任务。 首先...
最近没啥分数了,只好上传一些自己整理的资源了。呵呵。 不过资源非常的好。
本文详细解答了SQL应用中常遇到的一些问题,对实际操作有重大的作用。
MySQL中文乱码问题是一个常见的困扰,特别是在处理含有中文字符的数据时。主要的乱码原因有三个:1)服务器本身的设置问题,2)数据库表的字符集配置,以及3)客户端程序(如PHP)连接时的字符集设定。下面将详细...
总之,MySQL汉字拼音数据库是处理中文信息不可或缺的工具,它能够为各种涉及到汉字处理的项目提供强大支持,提高开发效率和用户体验。通过有效的数据库设计和使用,我们可以充分利用这些数据,创造出更加智能和人性...
MySQL 5.7中文文档是针对这个特定数据库版本的详细技术参考,包含了丰富的信息,适合开发者、管理员和学习者使用。文档的翻译质量被描述为“还行”,尽管资源可能不易找到,但提供了全面的指南。 该文档涵盖了从...
MySQL中的汉字乱码问题是一个常见的困扰许多开发人员和数据库管理员的问题。这主要涉及到字符编码设置不正确,导致在存储或显示汉字时出现乱码。在MySQL中,字符集是用来定义如何存储和处理字符的规则,它包括服务器...
mysql汉字笔画库,汉字查询笔画数量,包含普通汉字,UNicode、GB编码等,字段包含:汉字、笔画数、笔顺、UNicode、GB等
总的来说,解决C#操作MySQL中文乱码问题的关键在于保持从数据库配置到代码再到文件的整个过程中的编码一致性,使用UTF-8编码,并确保在每个环节都正确地指定和处理。通过以上步骤,你应该能够成功地避免中文乱码问题...
代码如下: select areaName from area order by convert(areaName USING gbk) COLLATE gbk_... 您可能感兴趣的文章:mysql的中文数据按拼音排序的2个方法mysql如何按照中文排序解决方案MySQL按照汉字的拼音排序简单实例
MySQL中文参考手册是一份详尽的数据库管理系统指南,专为使用MySQL进行数据存储、管理和查询的用户和开发者设计。MySQL是一种流行的开源关系型数据库管理系统的(RDBMS),它以其高效、稳定和易于扩展的特性而受到全球...
在数据库表中没有录入汉字对应的拼音首字母的情况下,进行汉字拼音首字母搜索,下载文本后 直接在mysql中执行,后就可实现根据拼音搜索功能
使用源码分发版安装MySQL:解释如何通过源码安装MySQL,包括配置选项和解决编译问题。 5.5. 安装后的设置和测试:描述安装MySQL后应该执行哪些配置和测试步骤。 6. MySQL升级指南 6.1. MySQL升级:说明如何从旧...
MySQL5:这是关于5.1版至5.1.2-alpha版MySQL数据库系统的参考...合法的信息,包括许可证信息,看到前言和法律声明利用MySQL的帮助,请访问或MySQL的论坛或MySQL邮件列表,在那里你可以讨论你的问题与其他MySQL用户。
Ubuntu MySQL 中文乱码问题解决方案 在 Ubuntu 系统中,MySQL 数据库中文乱码问题是一个常见的问题。乱码问题可能是由于 MySQL 数据库的字符编码设置不正确所致。解决这个问题需要对 MySQL 数据库的字符编码进行...
MySQL中文参考手册.chm 449kb <br/>0 译者序 1 MySQL的一般的信息 1.1 什么是MySQL? 1.2 关于本手册 1.2.1 本手册中使用的约定 1.3 MySQL的历史 1.4 MySQL的主要特征 1.5...
总之,解决MySQL中文乱码问题的关键在于确保所有环节的字符集设置一致且兼容中文。从数据库、表、连接到客户端工具,都需要仔细检查和调整,以确保正确处理中文字符。如果以上方法无效,可能需要检查更深层次的系统...
这份MySQL中文手册的完整版,将这些内容都进行了详细的中文翻译,使得国内用户在使用过程中能更轻松地理解和解决问题,不必依赖英文资料,提升了学习和工作效率。无论是初学者还是经验丰富的开发者,都能从中受益。...