完美解决mysql5.5无法插入中文数据及插入后显示乱码(亲测成功)
解决mysql字体乱码问题
解决MySQL 5.5的中文乱码问题
1.在mysql压缩目录下,有一堆的参数配置文件,比如:my-innodb-heavy-4G.ini,复制一下这个文件,自己改下名字,比如叫:my.ini……
1.在mysql压缩目录下,有一堆的参数配置文件,比如:my-innodb-heavy-4G.ini,复制一下这个文件,自己改下名字,比如叫:my.ini
2.打开my.ini文件,增加如下参数:[client]:增加default-character-set=utf8参数
以下是代码片段:
[client]
#password = [your_password]
port = 3306
socket = /tmp/mysql.sock
default-character-set=utf8
[mysqld]:增加如下3个参数
以下是代码片段:
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
# generic configuration options
port = 3306
socket = /tmp/mysql.sock
3.设置完成后,重启下mysql服务
4.连接上你的数据库之后,输入命令:SHOW VARIABLES LIKE '%char%';即可查看到现在你的数据库所使用的字符集了:。
数据库中乱码问题解决方案
数据库中乱码问题解决方案数据库中乱码问题是一个常见的问题,特别是在多语言环境下。
在这种情况下,有时候我们会发现数据库中存储的数据出现乱码,这可能导致数据的有效性受到影响。
以下是一些解决方案,可以帮助您解决这个问题。
1. 确认数据库的字符集在创建数据库的时候,需要确认数据库的字符集是否正确。
如果字符集不正确,那么在存储数据的时候就会出现乱码问题。
可以通过以下查询语句来查看数据库的字符集:SHOW VARIABLES LIKE 'character_set_database';如果发现字符集有误,可以通过以下语句来修改数据库的字符集:ALTER DATABASE database_name CHARACTER SET utf8;2. 确认连接字符集连接字符集也可能导致乱码问题。
如果您的连接字符集与数据库字符集不同,那么在查询数据时就会出现乱码问题。
可以通过以下语句来查询连接字符集:SHOW VARIABLES LIKE 'character_set_connection';如果连接字符集有误,可以通过以下语句来修改连接字符集:SET NAMES utf8;3. 确认表的字符集在创建表的时候,需要确认表的字符集是否正确。
如果表的字符集不正确,那么在存储数据的时候就会出现乱码问题。
可以通过以下语句来查询表的字符集:SHOW CREATE TABLE table_name;如果发现字符集有误,可以通过以下语句来修改表的字符集:ALTER TABLE table_name CONVERT TO CHARACTER SET utf8;4. 确认字段的字符集在创建字段的时候,需要确认字段的字符集是否正确。
如果字段的字符集不正确,那么在存储数据的时候就会出现乱码问题。
可以通过以下语句来查询字段的字符集:SHOW FULL COLUMNS FROM table_name;如果发现字符集有误,可以通过以下语句来修改字段的字符集:ALTER TABLE table_name MODIFY column_name varchar(255) CHARACTER SET utf8;5. 确认应用程序的字符集除了数据库和连接字符集之外,应用程序的字符集也需要与数据库的字符集相同。
访问MySQL数据库时中文乱码问题分析及解决
访问MySQL数据库时中文乱码问题分析及解决使用MySQL保存中文数据时,经常会遇到乱码问题。
产生乱码的原因很多,在笔者以为对MySQL的字符集处理已经很有了解的时候,使用C#编程时,竟再一次遇到了乱码。
联想到前几天一位同事在使用JDBC访问MySQL时遇到的中文乱码问题,决定对MySQL中文乱码问题的产生场景进行一次总结。
一、错误读出现象:一个已经存在数据的MySQL数据库,该数据库的数据用系统中其它软件、网页查看均正常,使用MySQLcc之类的客户端查看也正常,可是在新写的网页中总是显示乱码。
分析:其它系统都可以正常查看数据,说明数据本身是没有问题的。
在网页中显示乱码,一定是网页的编码字符集和获取到的数据的编码字符集不一至。
比如数据库的字符集是UTF 8的,而网页的字符集是gb2312的,那么网页就会把UTF8编码的字体串当作gb2312的来处理,结果产生乱码。
解决办法:在连接数据库时,设定连接字符集,使连接字符集和当前网页或客户端程序使用的字符集一致。
可以使用MySQL的Set Names指令设定连接字符集。
假设网页的字体集为gb2312。
在连接MySQL后,在连接上执行如下SQL语句:Set Names ‘gb2312’在以后所有这个连接上的查询,MySQL都会自动把数据库中的数据转换成gb2312编码格式传过来。
mysqli_query($db,"SET NAMES 'gb2312'")二、错误写入现象:一个网页或程序向一个MySQL数据库中写数据,写完后,这个网页或程序自己可以正常读取数据,而从其它客户端或网页中读取数据都是乱码。
分析:其它的正常的客户端出现乱码,说明数据库中的字符编码不对。
写数据的那个网页能正常读取,是因为写和读都用了错误的编码格式,将错就错,反而能读出正确的数据了。
比如数据库中设定的字符集为UTF8,而网页使用gb2312编码执行了插入数据的SQL,那么MySQL就会把这些gb2312的编码当成是UTF8的编码写进数据库。
mysql彻底解决输入和显示中文字段乱码问题
1、mysql中文乱码问题有两个,第一个是客户端的中文输入乱码问题,第二个是在黑窗口显示结果时乱码。
第一个问题需要设置客户端client和连接connection的编码为:GBK;
第二个问题需要设置结果显示results的编码为:GBK;
先查询现在的编码:
然后修改编码:
但是这样的改变是动态的,也就是当下一次性的,如果下次重启了数据库,其编码有会恢复为原来的样子了。
----------------------------------------彻底解决中文乱码问题------------------------------------------------------------
1、先得找到 .ini 数据库配置文件。
在Mysql 5.5版本以下的旧版本,.ini 文件可以直接在Mysql的安装目录中找到。
在Mysql 5.5及以上的新版本,.ini 文件就需要在C:\ProgramData\MySQL\MySQL Server 5.5中才能找到!
但C盘下的ProgramData目录是隐藏的,所以先选择显示隐藏项目:
修改.ini 文件中的[mysql] 下面的default-character-set = gbk
这种修改方法是静态的,不管是否重启,都有效。
安装配置Mysql5.5并且完美解决中文乱码问题
安装配置Mysql5.5并且完美解决中文乱码问题•启动服务windows下DOS命令窗口输入指令:查看服务是否启动:net help services启动mysql服务:net start mysql停止mysql服务:net stop mysqllinux下在bash下,输入指令:查看服务状态:service mysqld status启动mysql服务:service mysqld start停止mysql服务:service mysqld stop•登陆mysql -u[这里输入用户名] -p[这里输密码]•忘记管理员密码先停止mysql服务然后输入:mysqld --skip-grant-tables,此时mysqld服务会被启动在命令行输入:mysql -uroot,以不用密码的方式登录root输入:update er set password=PASSWORD('[这里输入你的新密码]') where user='root'输入:flush privileges退出,重启mysql服务,用新密码即可登录•创建数据库用root账户登录mysql控制台查看所有数据库:show databases;创建数据库:create database openfire;创建数据库管理员并分配权限:grant all on openfire.* to openfire@localhost identified by "openfire"切换数据库:use openfire;查看当前数据库中所有的表:show tables;•简单的权限控制用root用户登录mysql命令行增加权限:输入grant all on [数据库名+表名也可以*.*] to [用户名]@[ip地址] identified by '[密码]'例如:grant all on admin.* to ************.100.156 identified by 'password01!'上述语句的意思:让otalk用户可以在ip地址为172.17.100.156的主机上拥有admin数据库下的所有表的所有访问权限移除权限:revoke all privileges on ers from otalk@localhost•Mysql5.5中文问题完美解决方案暂停mysql服务,在Mysql安装目录下找到my.ini文件,在[client]下面添加一句:default-character-set=utf8将[mysqld]下面更改两句:character-set-server=utf8collation-server=utf8_general_ci然后重启mysql服务。
关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)
关于Mysql中⽂乱码问题该如何解决(乱码问题完美解决⽅案)最近两天做项⽬总是被乱码问题困扰着,这不刚把mysql中⽂乱码问题解决了,下⾯⼩编把我的解决⽅案分享给⼤家,供⼤家参考,也⽅便以后⾃⼰查阅。
⾸先:⽤show variables like “%colla%”;show varables like “%char%”;这两条命令查看数据库与服务端的字符集设置如果查看出来都是gbk2312,或 gbk,那么就只能⽀持简体中⽂,繁体和⼀些特殊符号是不能插⼊的,我们只有修改字符集为UTF-8,修改⽅法如下:⽤记事本或UitraEdit打开mysql数据库安装⽬录下的my.ini⽂件打开,然后Ctrl+F搜索default-character-set,将后⾯的字符集修改为UTF8,注意要修改两个地⽅,⼀个事客户端的,⼀个是服务端的。
然后保存,重启mysql服务、、进去继续⽤show variables like “%colla%”;show varables like “%char%”;着两条语句查询⼀下字符集。
如图:到此就配置完成了。
注意:如果以前建有数据库没有删除的请⽤ show database 数据库名;和 show create table 表名;查看⼀下数据库和表的字符集是否为UTF8 ,因为修改my.ini⽂件,它不能修改原来数据库的的字符集。
在命令⾏下⾯可以⽤alter database 数据库名 character set “字符集”;命令来修改数据库字符集还有⼀点要注意的是,修改为UTF8以后,在命令⾏下⾯中⽂是乱码的,只输出到页⾯或控制台是正常的,这个问题我也上⽹查了⼀下,貌似命令⾏下⾯不⽀持UTF8,我也不太清楚。
当修改以后,在命令⾏下⾯如果要插⼊中⽂,可以在插⼊语句之前执⾏,set names gbk2312;就可以插⼊中⽂了,但是不能插⼊繁体和⼀些特殊符号。
以上就是这⼏天解决乱码的成果。
MySQL中的字符集转换与乱码问题解决方法
MySQL中的字符集转换与乱码问题解决方法在使用MySQL数据库时,我们经常会遇到字符集转换和乱码的问题。
正确地处理字符集转换和乱码是确保数据库存储和检索数据的关键。
本文将探讨MySQL 中的字符集转换与乱码问题,并提供解决方法。
一、字符集与编码首先,我们需要了解字符集和编码的概念。
字符集是一组字符的集合,而编码则是将字符集中的字符映射到二进制数据的规则。
常见的字符集有ASCII、Unicode和UTF-8等,而编码方式有UTF-8、GBK、Latin1等。
在MySQL中,字符集用来定义存储和处理文本数据的规则,而编码则是实际使用的二进制编码。
如果字符集和编码不一致,就会导致数据存储和检索时出现乱码问题。
二、MySQL中的字符集设置在MySQL中,字符集设置是通过修改服务器、数据库、表和列的字符集属性来实现的。
1. 服务器字符集设置在MySQL配置文件(f)中,可以设置服务器的默认字符集和排序规则。
通过编辑f文件,找到[mysqld]节点,在其下方添加如下内容:```shell[mysqld]...character_set_server=utf8mb4collation_server=utf8mb4_unicode_ci...```这样,服务器的默认字符集就被设置为utf8mb4,并且排序规则为utf8mb4_unicode_ci。
2. 数据库字符集设置在MySQL中,每个数据库都有一个特定的字符集和排序规则。
可以通过以下命令创建一个指定字符集的数据库:```sqlCREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATEutf8mb4_unicode_ci;```这样,创建的数据库就拥有utf8mb4字符集和utf8mb4_unicode_ci排序规则。
3. 表和列的字符集设置在创建表时,可以指定表和列的字符集和排序规则。
例如,创建一个使用utf8mb4字符集的表:```sqlCREATE TABLE table_name (col1 VARCHAR(255) CHARACTER SET utf8mb4 COLLATEutf8mb4_unicode_ci,col2 TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci);```这样,表和列的字符集就被设置为utf8mb4,并且排序规则为utf8mb4_unicode_ci。
数据库中乱码问题解决方案
数据库中乱码问题解决方案1. 介绍在数据库中,乱码问题是一个常见的挑战。
当数据被存储、处理或显示时出现乱码,会给用户带来困扰,并可能导致数据不正确地被处理或显示。
本文将探讨数据库中乱码问题的原因,提供解决方案以避免或解决这些问题。
2. 乱码问题的原因乱码问题可能出现在数据库的各个环节,例如数据存储、传输、处理和显示等。
以下是一些常见的乱码问题的原因:2.1 字符集不匹配数据库使用不同的字符集来存储和处理数据。
如果数据的字符集与数据库或应用程序的字符集不匹配,就会导致数据乱码问题。
2.2 编码转换错误在数据传输或处理过程中,可能会进行字符编码的转换。
如果转换过程中存在错误,就会导致数据乱码问题。
2.3 特殊字符处理不当一些字符具有特殊的含义或用途,如果在处理这些字符时不加以考虑,就会导致数据乱码问题。
例如,特殊字符在SQL查询中使用时可能引起问题。
3. 解决方案为了解决数据库中的乱码问题,我们可以采取以下一些措施:3.1 使用统一的字符集确保数据库、应用程序和客户端使用相同的字符集,并将所有数据存储在统一的字符集中。
这样可以避免字符集不匹配导致的乱码问题。
3.2 确保正确的编码转换在进行字符编码转换时,需要确保使用正确的转换算法和目标字符集。
可以使用一些常见的编码库或工具来进行转换,例如Iconv。
3.3 转义特殊字符在处理包含特殊字符的数据时,需要进行适当的转义处理。
例如,在执行SQL查询时,可以使用参数化查询或转义字符来避免特殊字符引起的问题。
3.4 设置正确的字符集和校对规则在创建数据库和表时,需要明确指定正确的字符集和校对规则。
这样可以确保数据被正确地存储和处理,从而避免乱码问题的出现。
4. 示例下面是一些示例代码,演示如何使用解决方案来避免数据库中的乱码问题:4.1 创建数据库和表时设置字符集CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;USE mydb;CREATE TABLE mytable (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;4.2 在应用程序中确认所有数据使用正确的字符集String url = "jdbc:mysql://localhost/mydb?useUnicode=true&characterEncoding=ut f8";String user = "myuser";String password = "mypassword";Connection conn = DriverManager.getConnection(url, user, password);4.3 执行参数化查询以避免SQL注入问题String sql = "SELECT * FROM mytable WHERE name = ?";PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, "John"; // 参数化查询ResultSet rs = stmt.executeQuery();5. 总结在数据库中,乱码问题是一个常见的挑战。
Mysql中文乱码问题完美解决方案
转载:Mysql中文乱码的解决方法第一种方法,很精辟的总结:经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧:WINDOWS 下导入应该这样使用MYSQL的命令在DOS 命令下进入mysql的bin目录下,输入mysql -uroot -p密码数据库名称<要恢复的数据库, 例如我们要把D盘的一个名称为test.sql的数据库恢复到本地的test2这个数据库,那么就这样: mysql -uroot -p密码test2以前的国外主机用的Mysql是4.x系列的,感觉还比较好,都无论GBK和UTF-8都没有乱码,没想到新的主机的Mysql是5.0版本的,导入数据后,用Php读出来全是问号,乱码一片,记得我以前也曾经有过一次切换出现乱码的经验,原因肯定是Mysql版本之间的差异问题。
只好查资料,发现了一个解决方法,就是在mysql_connect后面加一句SET NAMES UTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用SET NAMES GBK,代码如下:$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);mysql_query("SET NAMES 'GBK'");数据库字符集为utf-8连接语句用这个mysql_query("SET NAMES 'UTF8'");mysql_query("SET CHARACTER SET UTF8");mysql_query("SET CHARACTER_SET_RESULTS=UTF8'");还有个方法就是,如果你自己的机器的话,可以更改MYSQL字符集,一般在MYSQ4和MYSQL5这两个版本中有效。
如何解决MySQL中文乱码和字符集问题
如何解决MySQL中文乱码和字符集问题MySQL是一种开源的关系型数据库管理系统,被广泛用于各种业务应用和网站开发中。
然而,在处理中文字符时,MySQL往往会遇到乱码和字符集问题,给使用者带来很多麻烦。
本文将探讨如何解决MySQL中文乱码和字符集问题,并提出一些优化建议。
一、了解字符集和字符编码在解决MySQL中文乱码和字符集问题之前,我们首先需要了解一些基本概念,即字符集(Character Set)和字符编码(Character Encoding)。
字符集是一种规范,用于定义字符的集合和字符的规则。
常见的字符集有ASCII、UTF-8、GBK等。
字符编码是字符集在计算机中存储和传输的方式。
常见的字符编码有ASCII、UTF-8、UTF-16、GB2312等。
二、设置数据库、表和字段的字符集和字符编码解决MySQL中文乱码和字符集问题的第一步是正确设置数据库、表和字段的字符集和字符编码。
1. 设置数据库字符集和字符编码在创建数据库时,可以指定数据库的字符集和字符编码。
例如:CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;这样,数据库的字符集就被设置为utf8mb4,字符编码则是utf8mb4_unicode_ci。
确保数据库的字符集和字符编码与应用程序及其它组件保持一致。
2. 设置表的字符集和字符编码在创建表时,也可以指定表的字符集和字符编码。
例如:CREATE TABLE mytable (id INT,name VARCHAR(30)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;这样,表的字符集和字符编码与数据库保持一致。
3. 设置字段的字符集和字符编码在创建字段时,可以指定字段的字符集和字符编码。
例如:CREATE TABLE mytable (id INT,name VARCHAR(30) CHARACTER SET utf8mb4 COLLATEutf8mb4_unicode_ci);这样,字段的字符集和字符编码与表保持一致。
mysql中文乱码问题的解决方法【详细】
mysql中文乱文问题1Mysql数据库1.1安装数据库mysql1.2常见错误下载并安装1.3安装mysql管理工具SQLyogSQLyog的安装和使用方法:https:///qq_32534441/article/details/849695491.4创建数据库和表1.4.1常见错误(1)插入数据时,注意逗号与下一个字段间有空格,否则会报错。
(2)Mysql数据库中输入中文乱码解决乱码的方法如下:第一步:找到安装mysql的目录找到my.ini 文件;第二步:使用记事本打开my.ini文件,找到这个地方看看default-character-set 是不是utf8不是的话改为utf8即可!(以前的版本可能没有这句话直接加上就好了!)# MySQL client library initialization.[client]port=3306[mysql]default-character-set=utf8第三步:在mysql数据库cmd中输入:show variables like'%char%';Show create database test;Show create table student;查看数据库的编码格式!第四步:改变原有数据库的编码方式:set character_set_database=utf8;set character_set_server=utf8;set character_set_client=gbk;set character_set_connection=gbk;set character_set_results=gbk;set names gbk;最后的编码格式为:第五步:将列的编码也改为utf8第六步:去掉隐藏语言选项前的勾,并将表中需要显示中文的列的字符编码改为utf8。
Mysql中文乱码的解决方法(3)
Mysql中文乱码的解决方法(3)只有在mysql3.23的时候,phpmyadmin才会多一个gb2312的页面charset,这时候是正常的。
3.将以前的mysql3的库文件导入mysql4.1的库有两种情况:一是从phpmyadmin上导入,这时候你要注意的是在选择库文件的页面左下脚有个“文件的字符集:”,默认是utf8,要改成gb2312,否则导进去乱码;二是在linux下导入,这时候你需要先在库文件的头部加一行:set names 'gb2312'; 注意最后也是;号,别漏了。
然后执行mysql -u用户名 -p密码 xx-x.sql > 库名导入完成以后再用phpmyadmin打开看,里面的中文字就是正确的。
4.从mysql4.1里导出库文件一.用phpmyadmin导出导出倒是问题不大,如果phpmyadmin的浏览页面里显示的中文是正常的,那么导出肯定也是正常的二.在linux上导出如果用mysqldump导出出现了乱码也没有关系,可以运行iconv 来转换一下iconv -c -f utf-8 -t gb2312 库文件名 >新的gb2312的库文件名综上所述,你要注意:1。
尽量在需要导入的库文件的开头加入set names'gb2312';告诉mysql你要导入的是一个gb2312的文件;2。
可能你需要这个:set names 'utf8';在登陆到mysql后用,把character的一些默认参数改到utf8上,有时可以减少一些困扰,不过也不是必须的。
在mysql上使用:show variables like 'character_set_%';用来查看当前的状态。
3.如果出现乱码也不要怕,一是你要注意留存原有的备份,二是用iconv来进行转化。
在正常使用之前注意做导入导出的测试,确保万无一失。
最后加一句:#url#原创文章,转载请注明出处。
Mysql彻底解决中文乱码问题的...
Mysql彻底解决中⽂乱码问题的...mysql 中常常出现对中⽂⽀持不友好的情况常见的错误 “Illegal mix of collations for operation”下⾯我们规整⼀下 mysql 数据库中⼀共涉及到哪些字符集character-set-server/default-character-set:服务器字符集,默认情况下所采⽤的character-set-database:数据库字符集character-set-table:数据库表字符集⼀般情况下只需要设置character-set-server,⽽在创建数据库和表时不特别指定字符集,这样统⼀采⽤character-set-server字符集.character-set-client:客户端的字符集character-set-results:结果字符集在客户端,如果没有定义character-set-results,则采⽤character-set-client字符集作为默认的字符集下⾯分享⼀个解决mysql 中⽂字符乱码的解决⽅案:修改mysql 配置vim /etc/mysql/f查找 “client” ⼀项:上⾯黄⾊关键词就是我们要找的 client, 紧接着在下⾯添加⼀⾏: default-character-set=utf8保存退出配置⽂件.然后关闭mysql服务,重新启动./etc/init.d/mysql stop/etc/init.d/mysql start然后我们进⼊ mysql ,查看字符集mysql> show variables like 'character\_set\_%';+--------------------------+--------+| 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 |+--------------------------+--------+7 rows in set (0.00 sec)上⾯结果可以看到字符集默认⽀持 utf8,我们在涉及到汉字的时候不会有乱码的情况.以上所述是⼩编给⼤家介绍的Mysql彻底解决中⽂乱码问题的⽅案(Illegal mix of collations for operation),希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
Mysql中文乱码解决方案
问题详细描述
用ODI从ORACLE数据库向MYSQL数据库进行数据集成时,只要字段内容为中文均无法正确集成,显示为乱码;英文和数字可以正确集成。
解决方法:
1.检查服务器上Oracle数据库的字符集,SQL语句为select * from nls_database_parameters,
其来源于props$,是表示数据库的字符集,
NLS_CHARACTERSET 这个参数的值应该是ZHS16GBK。
2.在Mysql的安装目录中找到my.ini文件,修改配置如下:
把Mysql的客户端和服务器的字符集改为gbk后,在Mysql中新建的数据库,默认的字符集就是gbk了。
当数据库的字符集为gbk,在该数据库下建的表,其字符集也默认为gbk。
3. 在ODI的Topology manager中创建目标数据服务器
Topology->物理体系结构->技术->MySQL,右键MySQL,选择“插入数据服务器”
在“数据服务器”的编辑框中,“定义”标签下,输入数据服务器名称,用户和口令:
“JDBC”标签:
JDBC URL的填写如下:(IP地址,端口号,数据库名,用户名,用户密码根据实际情况改写,红色部分照抄下来就行)
jdbc:mysql://172.18.33.231:3306/test_gbk?user=root$password=wiscom&useUnicode=true&aut oReconnect=true&characterEncoding=gbk
4.完成上述设置之后,用ODI从ORACLE数据库向MYSQL数据库进行数据集成时,字段内容为中文时就可以正确集成,在MYSQL中能正确显示中文。
MySQL命令无法输入中文问题的解决方式
MySQL命令⽆法输⼊中⽂问题的解决⽅式发现问题近期通过 mysql 命令连接 mysql server 的时候, 出现了不能输⼊中⽂的现象, 如下所⽰:mysql> SELECT 'Chinese characters <> are stripped';+------------------------------------+| Chinese characters <> are stripped |+------------------------------------+| Chinese characters <> are stripped |+------------------------------------+1 row in set (0.00 sec)输⼊的所有中⽂都会被替换为空. 上述测试为官⽅的 mysql-5.7.32 版本.遍历官⽅ mysql 的发现了 oracle 官⽅的 mysql-5.7.34 和 mysql-8.0.24 分别修复了以下 bugFor builds compiled using the libedit library, if the mysql client was invokedwith the --default-character-set=utf8 option, libedit rejected input ofmultibyte characters. (Bug #32329078, Bug #32583436, Bug #102806)参考, 出现和描述中类似的事情, mysql 命令⾏的交互模式不⽀持所有宽字符的输⼊.不能输⼊中⽂会出现什么问题?从测试来看, 该 bug 只影响通过 mysql 命令以交互模式连接 mysql server 的会话操作 . 如果线上有使⽤此 bug 的版本, 操作表的时候可能会出现丢失中⽂的问题.以下⽅式不受影响:1. 各程序通过相关驱动连接数据库;2. mysql 命令以⾮交互模式操作, ⽐如 mysql -h ... -p.... < /tmp/t.sql哪些版本受影响该 bug 在 5.7.34 和 8.0.24 中修复, 见 . 从修复的补丁来看, bug 与 libedit 版本没有关系, 不管是 rpm, deb 还是官⽅的 build 版本都受此影响.从我们的测试来看, 以下版本都会受到影响:5.7.31 ~ 5.7.338.0.21 ~ 8.0.23备注: 其它发⾏版暂不明确, ⼤概率也会出同样的问题, 不过发⾏版通常⽐官⽅的慢⼀拍, 其低版本可能会提前修复该问题.如何处理线上的版本的选择可以集中在使⽤过的⼀些版本, ⽐如笔者常⽤的:- percona 分⽀percona-5.6.45percona-5.7.28percona-8.0.22- 官⽅版本mysql-5.6.29mysql-5.7.28mysql-8.0.19如果线上已经使⽤了上述受影响的版本, 可以采⽤以下⽅式处理:临时处理不⽅便升级的话, 可以先使⽤ 5.7.30 以下或 5.7.34 及以上版本的 mysql client 命令;⼩版本升级如果⽅便进⾏⼩版本升级, 建议升级到以下版本:5.7.358.0.26总结到此这篇关于MySQL命令⽆法输⼊中⽂问题的⽂章就介绍到这了,更多相关MySQL命令⽆法输⼊中⽂内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
Mysql常见中文乱码及解决方案
Mysql常见中⽂乱码及解决⽅案
在Mysql中会经常碰到中⽂乱码问题,与oracle相⽐,不但库拥有字符集,连表,或字段都拥有⾃⼰的字符集
导致我们在查询,新增记录时出现各种各样的乱码,或者是⾃⼰的终端上没有问题,在其它终端连接就会出现问题。
常见乱码分析:
1,登录⽅式,导致的中⽂乱码:
2,操作系统语⾔集:
$ cat /etc/sysconfig/i18n
显⽰UTF-8格式,也可以使⽤:
$ echo $LANG
可以使⽤ export LANG=C 进⾏修改。
但是重新登录后,乱码依然:
3,⽂件格式导致的中⽂乱码:
此时,在执⾏SQL脚本时就会报错:
这个解决⽅案,是将⽂件修改成utf-8格式,或者在VI中修改:
:set fileencoding=utf-8
在MYSQL中,⼀个汉字占3个字节,如何避免乱码:
1,编辑⽂件时,指定与数据库相同字符集,⽐如gbk
2,在初始化数据库时,对库的字符集,表,以及字段进⾏统⼀编码设置,⽐如gbk
3,在代码中,指定字符集:
mysql_set_character_set(mysql, "utf8");
或者执⾏:
mysql_query('SET NAMES UTF8')。
JDBC连接MySQL中文乱码问题及解决方案
JDBC连接MySQL中文乱码问题及解决方案【摘要】JDBC加MySQL的开发方式深受广大软件开发者的喜爱,但有时进行数据库编程时会涉及到操作中文字段,比如通过sql语句插入中文字段,有时会出现乱码的问题。
如何解决这些问题呢?本文进行了常见的问题描述和解决方案。
【关键词】JDBC MySQL 中文乱码一、概述JDBC加MySQL的开发方式深受广大软件开发者的喜爱,但是开发中如果遇到涉及到中文时经常会遇到以下几种情况:在用jdbc向mysql数据库进行中文字段的查询时,数据库有该记录值但是查询却失败了;或者插入中文字段时出现了乱码。
究其原因是因为mymysql命令行客户端默认使用的字符集是latin1,我们查询或插入的字符串是gbk或别的编码,由于编码不一致导致的。
二、常见问题(1)安装mysql过程中如果不设置使用的编码方式,采用默认的字符集创建数据库和表,在给表中的字段赋值时。
无法使用中文字段,如果在建表时对该列的字符集类型进行了设置,比如设为utf8,则可使用中文字段。
这是因为服务器、数据库、表、列均使用的是MySQL数据库默认的编码――”latin1”。
(2)在使用JDBC技术进行数据的查询时,如果采用中文表名进行,例如查询的sql语句为select*from 学生,则报错,究其原因为MySQL对aql语句中的“学生”解析失败了。
(3)在使用JDBC技术进行数据的查询时,如果采用中文字段的插入时,插入后通过mysql查看该字段变为了乱码。
三、解决方案乱码出现的情况都是由于客户端、服务器端、数据库、查询结果等的字符集设置有编码不一致导致的。
首先了解一下MySQL中涉及的几个字符集:character-set-server/default-character-set:服务器字符集,默认情况下所采用的。
character-set-database:数据库字符集。
character-set-table:数据库表字符集。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
将对应的last1都改为utf8;并在 client 和mysqid的port下都添加一句
default-character-set=utf8
3.在数据库中
show Variables like'%set%';
敲如下命令;SET character_set_database=utf8;
在试试下面这句:
SET character_set_results=gbk;
现在你查询出来的可能就不是乱码了!
但是通常需要每次都得执行上面的语句才能将乱码变为正常!虽然有点麻烦,但起码也比插入不了数据库强是吧,并且这种方法,在用eclipse JDBC连接数据库的时候,是不会出现乱码的!
SET character_set_server=utf8;
SET character_set_client=gbk;
SET racter_set_connection=gbk;
之后完所有命令,现在就应该可以插入中文了,
但是先别高兴再早奥!!如果我没猜错的话,现在的确可以插入中文了,但是从数据库里读出的中文数据一定是乱码吧???怎么办??
1.安装数据5.5 D:\Program Files\安装包\mysql-5.5.20-win32.msi
根据提示点击下一步,需要特别注意,在选择编码格式的时候一定要 选utf8,切忌不可使用系统自带lasten1,否则后面会很麻烦。
2.打开安装目录C:\Program Files\MySQL\MySQL Server 5.5\my.ini