搜档网
当前位置:搜档网 › mysql中文乱码解决

mysql中文乱码解决

mysql中文乱码解决
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乱码处理总结:

(1)java中处理中文字符正常,在cmd client中显示乱码是字符集的问题.

(2)字段长度设置够长,但插入中文字符时提示

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column错误是字符集的问题.

(3)乱码问题归根到底是字符集的问题,那就从字符集设置方面考虑,不外乎下面几个方面:server,client,database,connection,results.

-------------------------解决办法----------------------

(1)修改my.ini(MySQL Server Instance Configuration 文件)

# CLIENT SECTION //客户端

[client]

port=3306

[mysql]

default-character-set=gbk

# SERVER SECTION //服务端

[mysqld]

default-character-set=gbk

(2)修改data目录中相应数据库目录下的db.opt配置文件

default-character-set=gbk

default-collation=gbk_chinese_ci

(3)数据库连接串中指定字符集

URL=jdbc:mysql://yourIP/college?user=root&password=yourPassword&useUnicode =true&characterEncoding=gbk 注:在mysql4.1.0版要加

useUnicode=true&characterEncoding=gbk 如果是5.0版以上的,加不加都是没有关系的!

(4)在创建数据库时指定字符集

create database yourDB CHARACTER SET gbk;

(5)在dos命令上要设置

set names gbk

好了,经过检查上面四个方面的设置,应该OK 了!不会出现诸如

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column等问题.

第三种方法,说有太复杂了,反到不知道怎么弄了,你试试,也许可以用得上

1.修改/etc/https://www.sodocs.net/doc/3515996194.html,f文件,改成这样:

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

default-character-set=utf8

[mysql.server]

user=mysql

basedir=/var/lib

[mysqld_safe]

err-log=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

注意:就是加入了一句default-character-set=utf8。

2./etc/init.d/mysqld restart 重新启动mysql;

3.打开phpmyadmin,选择lang为"Chines simplifies(zh-utf-8)",选择"MySQL 连接校对"为"utf8_general_ci "点“显示MySQL 的运行信息”--“变量”,可以看到:character set client utf8 utf8

character set connection utf8 utf8

character set database utf8 utf8

character set results utf8 utf8

character set server utf8 utf8

character set system utf8 utf8

collation connection utf8_general_ci utf8_general_ci

collation database utf8_general_ci utf8_general_ci

collation server utf8_general_ci utf8_general_ci

从这里可以看到character全部变成utf8了。

有人要问,为什么都要改成utf8呢?改成GB2312不行吗?

解释如下:

我也不想改成utf8,只是phpmyadmin2.6在mysql4.1的时候只会用utf8,连其他

页面的charset也都是utf8,改成gb2312一定会乱码,我们只能凑phpmyadmin 了。

只有在mysql3.23的时候,phpmyadmin才会多一个gb2312的页面charset,这时候是正常的。

3.将以前的mysql3的库文件导入mysql

4.1的库

有两种情况:

一是从phpmyadmin上导入,这时候你要注意的是在选择库文件的页面左下脚有个“文件的字符集:”,默认是utf8,要改成gb2312,否则导进去乱码;

二是在linux下导入,这时候你需要先在库文件的头部加一行:

SET NAMES 'gb2312'; 注意最后也是;号,别漏了。

然后执行mysql -u用户名-p密码xxx.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来进行转化。

在正常使用之前注意做导入导出的测试,确保万无一失。

最后加一句:https://www.sodocs.net/doc/3515996194.html,原创文章,转载请注明出处。呵呵

邮件:support@https://www.sodocs.net/doc/3515996194.html,

作者: MySQL 发布日期: 2005-12-14

我升级了MYSQL到4.1.2,phpmyadmin用的是2.6.2。数据表里面有中文的字段中文都变成了乱码,导出数据也是乱码。我用以前的2.5.7没有问题,想问一下,应该在phpmyadmin的那个文件里改哪个设置一下才能显示出来的是正常的中文字?

和字符相关的变量中这几个和sql很有关系:

character_set_client

character_set_connection

character_set_results

此外就是数据库中对相应字段设置的charact set,如果没有对字段设置,缺省是table的charact set,table也没有指定则缺省使用database的。

上面3个变量的作用是这样的,client表示客户端发送过来的字符集,results表示发送到客户端的字符集(这两个分开是因为发送过来和发送过去的不一定是同一个客户端),connection则在客户端和数据库起一个连接作用。

具体是这样:比如我在mysql命令行设置client为gbk,connection为utf8,results 为gbk,数据库为big5,

当我发送一个insert语句的时候,这个语句作为gbk代码,先转为utf8代码(connection),再转为big5(database)插入数据库。

而运行一个select语句的时候,从数据库得到的结果则相反的过程,由big5转为utf8,再转为gbk,你得到gbk的结果。

因此最主要的是让client和results和你使用的客户端一致。比如你的网页是utf8编码,你就要设置这两个为utf8。

而在mysql命令行的时候,我用的是2000,需要设置为gbk

而我们用的set names XXX,实际上就是同时设置这3个变量为XXX。

在这样的情况下,我们可以把一个数据库中的不同表或不同字段设为不同的字符集,只要上面3个设置正确,就可以在数据库中同时使用不同的字符集。

注意要保证你的数据库中的字符已经使用了正确的字符集,比如如果一开始你设置错误,插入数据后,本身数据的编码就是不正确的,然后即使设置改回来,也不可能得到正确的显示了。

好了,随便弄了下,希望对你有所帮助

mysql乱码处理

用MS SQL和oracle9 太吃内存,有点大,全给卸载了. 安装了mysql占内存小,方便使用! version:mysql-essential-5.1.36 在MySQL Command Line Client显示中文一切正常; 在eclipse中新工程,连接到mysql,读取一个表显示: 代码: package com.mch.mysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Mysql1 { public static void main(String[] args) { String url ="jdbc:mysql://localhost/test"; String user="root"; String password="******"; try { Class.forName("org.gjt.mm.mysql.Driver").newInstance(); Connection conn= DriverManager.getConnection(url,user,password); Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("select * from pet"); while(rs.next()){ System.out.print("name:" + rs.getString(1)); System.out.print("\t所有者:" + rs.getString(2)); System.out.print("\tbirth:" + rs.getString("birth")); System.out.println(); } rs.close(); stmt.close(); conn.close(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } } 显示乱码?号.

解决openfire在使用MySQL数据库后的中文乱码问题

解决openfire在使用MySQL数据库后的中文乱码问题 openfire是一个非常不错的IM服务器,而且是纯Java实现,具有多个平台的版本,他的数据 存储可以采用多种数据库,如MySQL,Oracle等。 在实际使用时大家遇到最多的就是采用MySQL数据库后的中文乱码问题,这个问题十分有趣, 而且从现象上可以看出openfire内部的一些机制。 实际问题是这样的:首先启动openfire服务器,然后利用客户端或直接登录到后台新建一个帐户,为该帐户指定一些中文的属性,如姓名等。如果不重启服务器,你永远不会觉得有什么不对的地方,因为所有的中文显示都是正常的。接下来重启一下openfire,再用建立的帐号登录 客户端或进入后台管理端查看,会发现所有的中文全都变成了问号。登录到数据库中进行查看,发现所有的中文字符也均为问号,这说明了两个问题: openfire具有应用层缓存 数据库编码存在问题 解决办法其实也很简单,首先要保证你为openfire创建的数据库编码是utf8的,建表语句如下: create database openfire default character set utf8 default collate utf8_general_ci 当你原来就创建好数据库时,你可以用: alter database openfire default character set utf8 default collate utf8_general_ci; 其次,在初始化openfire数据库,即第一次配置openfire服务器时,在连接数据库那里的连 接串要加入字符编码格式,必须在连接里增加UTF8的编码要求,连接字符串设置如下: jdbc:mysql://127.0.0.1:3306/openfire?useUnicode=true&characterEncoding=utf8 如果已经安装完成,这个配置也是可以改动的,直接到openfire的安装目录下,找到 conf/openfire.xml这样一个文件,打开找到如下的XML节,修改其中的serverURL即可 com.mysql.jdbc.Driver jdbc:mysql://127.0.0.1:3306/openfire?useUnicode=true&characterEncodi ng=utf8 注意:由于&具有特殊含义,因此原&符号必须被转义为&

解决PHP+mysql处理中文乱码的独家方案

解决PHP+mysql处理中文乱码的独家方案 本方案适用于所有页面文件均为php(已成功测试过),如果有混合文件读者可以亲自测试。 问题现象如下图,1所示为修复过的头部引用文件header.php,中文能正常显示,2所示为未修复过的standard.php页面文件。 一、为了解决问题,首先应该设置数据库的字符编码,如下图所示,本例将所有编码设置为UTF-8。 同样将数据库中的所有表的字符编码设置成UTF-8。

这样,数据库中可以正常显示中文字符了,如下图所示。 如果要导入外来数据,也要设置好字符编码,对于非mysql数据库的导入(如从ACCESS数据库中导入),需要设置分隔字段的字符,然后执行便可,如下图所示。 ---------------------------------------- 二、数据库的字符编码完成后,便要将页面文件的编码设置好。 这里的要点有如下三点(红色为说明文字):

为了实现上述三点要求,本例采用的方案如下: 1.创建一个数据库连接文件conn.php ,其中在开头设置header 编码,并在创建数据连接后设置SQL 请求的编码,如下图所示: 2.设置页面文件的文件类型。可以在页面文件中的标签中设置字符编 码。 2.1如果之前的字符编码为gb2312,则该文件类型为ANSI (本例使用DW 和notepad++软件,读者也可用UE 编辑软件,只不过类型显示名称不一样而已),如下图所示: 2.2将标签的编码设置成utf-8并保存文件后,再次打开,会发现文件类型变成了ANSI as UTF-8,如下图所示:

mysql数据库乱码问题

数据库读出乱码解决 一、分析常见数据库问题 修改MYSQL数据库,数据表,字段的编码(解决JSP乱码) 要解决JSP乱码,首先就要了解JSP乱码的原因 1.架设服务器安装MYSQL时的会让你选择一种编码,如果这种编码与你的网页不一致,可能就会造成JSP页面乱码 2.在PHPMYADMIN或mysql-front等系统创建数据库时会让你选择一种编码,如果这种编码与你的网页不一致,也有可能造成JSP页面乱码 3.创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成JSP页面乱码 4.创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成JSP 页面乱码 5.用户提交JSP页面的编码与显示数据的JSP页面编码不一致,就肯定会造成JSP页面乱码. 如用户输入资料的JSP页面是big5码,显示用户输入的JSP页面却是gb2312,这种100%会造成JSP页面乱码 6.字符集不正确 要注意: 1.平时你在某些网站看到的文字可能有几种编码,如你看到一个繁体字,它有可能是big5编码,也有可能是utf-8编码的,更有可能是gb码的,没错,也就是说有简体编码的繁体字,也有繁体编码的简体字,一定要了解这一点. 如果你是做一个简体编码的网页,编码定为GB2312,如果有香港和台湾地区的访客提交繁体的信息,就可能会造成乱码,解决方法就是(1)将网站编码设为utf-8,这样可以兼容世界上所有字符,(2)如果网站已经运作了好久,已有很多旧数据,不能再更改简体中文的设定,那么建议将页面的编码设为GBK, GBK与GB2312的区别就在于:GBK能比GB2312显示更多的字符,要显示简体码的繁体字,就只能用GBK 7.JSP连接MYSQL数据库语句指定的编码不正确 8.JSP页面没有指定数据提交的编码,就会造成乱码: 所以,JSP乱码的原因无非就是以上几种,知道原因之后,要解决JSP乱码的方法也容易多了 我们一一来表达: 1.如果安装mysql的编码已不能更改,很多朋友是购买虚拟主机建立网站,无权更改MYSQL的安装编码,这一关我们可以跳过,因为只要后面的步聚正确,一样能解决乱码问题 2.修改数据库编码,如果是数据库编码不正确:可以在phpmyadmin执行如下命令:ALTER DATABASE`test`DEFAULT CHARACTER SET utf8COLLATE utf8_bin 以上命令就是将test数据库的编码设为utf8

mysql+php中文乱码问题及mysql时间函数

mysql+php中文显示乱码的解决mysql+php中文显示乱码的解决 建议数据库用utf8编码 问题汇总: 1.mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码. 2.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. 3.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. 4.用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP 页面乱码. 5.如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码. 6.PHP页面字符集不正确. 7.PHP连接MYSQL数据库语句指定的编码不正确. 使用mysql+php产生乱码的原因都了解得很清楚了,那么解决就不困难

了. 针对不同问题的解决方法: 1.mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码. 修改数据库编码,如果是数据库编码不正确,可以在phpmyadmin 执行如下命令: ALTER DATABASE 'test' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 以上命令就是将test数据库的编码设为utf8. 2.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. 修改表的编码: ALTER TABLE 'category' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 以上命令就是将一个表category的编码改为utf8. 3.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. 修改字段的编码: ALTER TABLE 'test' CHANGE 'dd' 'dd' VARCHAR( 45 ) CHARACTER SET utf8

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数据库乱码

彻底解决mysql中文乱码的办法 MySQL会出现中文乱码的原因不外乎下列几点: 1.server本身设定问题,例 如还停留在latin1 2.table的语系设定问题(包含character与collation) 3.客户端程式(例如php)的连线语系设定问题强烈建议使用utf8!!!! utf8可以兼容世界上所有字符!!!! Linux下Mysql插入中文显示乱码解决方案 mysql -uroot -p 回车输入密码 进入mysql查看状态如下: mysql不能插入中文 默认的是客户端和服务器都用了latin1,所以会乱码。 解决方案: mysql>user mydb; mysql>alter database mydb character set utf8;! 另一种方法是直接修改默认的Mysql配置文件 在debian环境下,彻底解决mysql无法插入中文和中文乱码的办法 上面提到了用临时方法更改数据库的字符集设置,显示中文,但是后来发现在有的系统下并不能成功,比如我用的debian 7.0,找了好久终于找到一个适合debian系统的解决方案,debian 7.0下测试成功,其他诸如修改client和mysql加入default-character-set=utf8的方法之类的,只适用与5.5以前的系统! 终极决绝方案,一劳永逸:

debian下mysql的字符串修改为utf8(参考:rainysia的专栏) 一、进入mysql(mysql -uroot -p),查看当前数据库字符集(status;) 二、查看当前系统版本(lsb_release -a) Mysql不能插入中文 三、#vim /etc/mysql/https://www.sodocs.net/doc/3515996194.html,f 。(5.5以前系统)在【client】下面加 入default-character-set=utf8 在【mysqld】下面加入default-character-set=utf8 Notice:注意如果修改后不能启动报错试试把default-character-set=utf8 改为character_set_server=utf8,仅仅加入到mysqld下面的.client就不需 要加了 四、#vim /etc/mysql/https://www.sodocs.net/doc/3515996194.html,f 。(5.5以后系统)如下修改: [client] default-character-set=utf8 [mysqld] default-storage-engine=INNODB character-set-server=utf8 collation-server=utf8_general_ci 五、重启mysql(/etc/init.d/mysql stop /etc/init.d/mysql start) 六、修成成功,进入mysql查看字符集(mysql>show variables like ‘character_set_%’;) Mysql无法插入中文 一、避免创建数据库及表出现中文乱码和查看编码方法 1、创建数据库的时候:CREATE DATABASE `test` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; 2、建表的时候 CREATE TABLE `database_user` ( `ID` varchar(40) NOT NULL default '', `UserID` varchar(40) NOT NULL default '', ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 这3个设置好了,基本就不会出问题了,即建库和建表时都使用相同的编码格式。但是如果你已经建了库和表可以 通过以下方式进行查询。 1.查看默认的编码格式: mysql> show variables like "%char%"; +--------------------------+---------------+ |

Oracle数据库工具中文显示乱码问题的解决

Oracle数据库工具中文显示乱码问题的解决 Oracle客户端查询工具有时会有查处的结果为中文时不能正常显示,要么为乱码,要么为问号,plsql出现这种问题,以为是版本造成的,用了老的和最新的还是一样,换了另外的数据库工具也一样,但注意一点,数据其实是没有问题的,取出来显示是正常的中文,只是在工具里显示的是问号。其实问题的原理很简单,就是字符集设置不正确造成的,但如此简单的原理在解决的过程中却会遇到很多麻烦,下面结合我遇到和解决的过程,给朋友们一点思路,说不定你们跟我的问题一样,通过这篇文章不用再折腾了,很快搞定,感觉飘飘…… 首先讲讲字符集的知识,Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。 影响oracle数据库字符集最重要的参数是NLS_LANG参数。它的格式如下: NLS_LANG = language_territory.charset 它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。 其中: Language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集。如:AMERICAN _ AMERICA.

ZHS16GBK。从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。 如何查询Oracle的字符集,很多人都碰到过因为字符集不同而使数据导入失败的情况。这涉及三方面的字符集,一是oracel server端的字符集,二是oracle client端的字符集;三是dmp文件的字符集。在做数据导入的时候,需要这三个字符集都一致才能正确导入。 查询oracle server端的字符集,有很多种方法可以查出oracle server 端的字符集,比较直观的查询方法是以下这种:SQL>select userenv(‘language’) from dual; 结果类似如下:AMERICAN _ AMERICA. ZHS16GBK 对于查询工具结果集中的中文乱码,其实有两种情况供参考: 1.安装了服务器及配套工具,这样还出现乱码就去检查注册表中的NLS_LANG项是否设置正确,很有可能是在安装时设置了不正确的字符集造成的; 2.只安装了客户端,没有配套工具(如sqlplus等),以10g为例,注册表中是没有NLS_LANG这项的,那么要改哪?同理,还是要改字符集,不过不是在注册表中设,是要在环境变量中增加或修改,即查看windows系统环境变量是否存在NLS_LANG,若存在则修改,

MySQL中文字符乱码解决

以下的文章主要介绍的是解决MySQL中文乱码的好用方案大汇总,我们大家都知道在使用MySQL数据库时,在插入中文字符的实际操作过程中,有时会出现一些乱码,例如,中文全被用?代替。 出现这种情况的原因,多是字符集不匹配造成的。 在MySQL中,如果使用缺省的字符集,在建库、建表时,默认使用的是latin1字符集,为ISO 8859-1西欧字符集。 插入中文字符时,与之不匹配,就会出现乱码。 本人使用的是MySQL 5.0版,并用C#操作MYSQL数据库,当插入中文字符时,发现显示的是MySQL中文乱码。 初步估计是字符集没有配对。查找后,发现MSYQL默认使用的是latin1,因此将数据库的配置文件中的字符设置改为utf8,并在C#中将中文字符,转为utf8,插入后,仍为乱码。 MySQL也支持gb2312,又将MySQL的字符设置改为gb2312,C#中使用Default,重起MySQL后,操作仍然无效。 后想起,虽然将MySQL的字符集设置为gb2312或utf8,但已经建立的数据库和表,仍采用的是默认的字符集,也即仍为当初的西欧字符集,最好,只得忍痛将数据库删除,重新以gb2312字符集建立数据库和表。 再用C#插入中文字符后,一切OK。 再安装好MySQL后,可以手工或使用配置工具,将my.ini文件中的默认字符集改为gb2312,再重新建库和表时,不用再在语句中指定字符集,其默认设置也即为gb2312,可以正常显示中文字符集。 1.建立数据库是一般的语句: 1.create database dbname; 2.在库中建表时语句为: 1.create table tbname(..........)engine=MyISAM character set gb k collate gbk_chinese_ci;

MYSQL数据中文的乱码问题

最近一台服务器环境升级,mysql从4.0升级到了5.0,乱码问题让人崩溃了…… 下面搜集了一堆方法,其实最简单的还是推荐使用帝国备份王,很好,很强大! 第一种方法,很精辟的总结: 经常更换虚拟主机,而各个服务商的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乱码处理总结: (1)java中处理中文字符正常,在cmd client中显示乱码是字符集的问题. (2)字段长度设置够长,但插入中文字符时提示 com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column错误是字符集的问题. (3)乱码问题归根到底是字符集的问题,那就从字符集设置方面考虑,不外乎下面几个方面:server,client,database,connection,results.

SQLSERVER访问MYSQL表中文显示成乱码

错误描述:SQLSERVER访问MYSQL表中文显示成乱码,中文会显示成???? 解决思路:用的是mysql-5.1.50-win32 与odbc3.1版本的.现在改成ODBC5·1 这样转换就没有问题SQLSERVER连接MYSQL 建立链接如下: 数据库软件与ODBC软件:mysql-5.1.50-win32与ODBC5·1(注意,odbc3.1版本,会出现乱码)MYSQL数据库情况:gmp_test 第一步:先要在MYSQL进行授权,让主机能访问MYSQL数据库,设置如下: 在mysql数据库执行,语句: GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.216' IDENTIFIED BY 'yxtech' WITH GRANT OPTION; 第二步:在SQLSERVER主机,设置ODBC连接,设置如下图: 第三步:在SQL SERVER 配置连接,配置语句如下 --删除连接 exec sp_dropserver'dxmysql','droplogins' --建立一个新连接 EXEC SP_ADDLINKEDSERVER @server ='dxmysql', --连接名称(随意,规范就可)

@srvproduct ='MYSQL', --连接MYSQL,数据库类型,固定的 @provider ='MSDASQL', --连接MYSQL的编码,固定的 @datasrc ='my_sql' --建立的ODBC连接(第二步建立的) --建立用户连接 EXEC sp_addlinkedsrvlogin'dxmysql','false','bi_etl','root','yxtech' --'dxmysql'为连接名称 --'bi_etl'为SQLSERVER用户,如果为NULL --'root','yxtech' 为登录MYSQL 的用户及密码 --进行查询 select*FROM OPENQUERY(dxmysql,'select * from test1')

Web应用中的中文问题以及数据表乱码

一、Web应用中的中文问题: Jsp页面编码:<%@page pageEncoding=“utf-8”%> 告诉jsp引擎,在将jsp转成servlet源文件时,该jsp文件的编码是什么。<%@page contentType=“text/html;charset=utf-8”%>相当于 Servlet中的response.setContextType()。即设置相应头。 浏览器会依据该编码来显示页面,保持jsp文件时,其真正的编码应该与设置的一致。 Html: 保存html文件时,其真正的编码应该与设置的一致。 Servlet: 获取请求参数时: request.setCharacterEncoding("utf-8"); 如果servlet要直接输出一些信息: response.setContentType("text/html;charset=utf-8"); 数据库:mysql 设置数据库编码: Create database servletdb(数据库名) default character set utf8; 如果数据库已经建好了,可以使用: Alter database servletdb(数据库名) default character set utf8; (修改编码) set names gbk; 二、工具中修改编码方式: 1、改变 Eclipse 或者 MyEclipse 新建文件的默认编码 eclipse 的: window-->preferences-->General-->ContentType 改成 utf-8 。 myEclipse 的 : window-->preferences-->myEclipse-files and editors-jsp encoding 设成ISO10646/UTF-8. 2、 eclipse 和java文件编码设定 Window-->preferences-->General-->Workspace Text file encoding 改为UTF-8 。方便项目移植到linux下编写。 3、项目编码 这里遇到的问题是,眼前的项目已经编写了大部分了,然而,只想接下来的新建的文件的编码是UTF-8 ,而以前的不变。那么右键自己的项目

如何解决MYSQL数据库中文乱码问题-

如何解决MYSQL数据库中文乱码问题? 问题:如何解决MYSQL数据库中文乱码问题? 回答: 在数据库安的时候指定字符集 如果在安完了以后可以更改以下文件: C: Program Files MySQL MySQL Server 5.0 my.ini 里的所有的default-character-set=gbk C: Program Files MySQL MySQL Server 5.0 data depot_development db.opt default-character-set=gbk default-collation=gbk_chinese_ci 建立数据库时候:指定字符集类型 CREATE DATABASE haichen CHARACTER SET gbk COLLATE gbk_chinese_ci 2.建表的时候也指定字符集 CREATE TABLE student ( ID varchar(40) NOT NULL default , UserID varchar(40) NOT NULL default , ) ENGINE=InnoDB DEFAULT CHARSET=gbk; -

1。创建数据库的时候:CREATE DATABASE `database` CHARACTER SET utf8 COLLATE utf8_general_ci 2.建表的时候CREATE TABLE `database_user` ( `ID` varchar(40) NOT NULL default , `UserID` varchar(40) NOT NULL default , ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 3.设置URL的时候jdbc:mysql://localhost:3306/database useUnicode=true characterEncoding=UTF-8

SSH下mysql中文乱码问题

SSH下mysql中文乱码问题 标签:mysql中文乱码分类:mysql2010-08-25 11:05 1.在hibernate.cfg.xml配置文件中修改如下 环境:Hibernate 3.2 + MySQL5.0(MySQL的编码已设置为utf8) 问题:通过Hibernate向MySQL写入中文后,通过Hibernate取回数据,在console中打印java对象显示正常。但在MySQL Query Browser中看到的是乱码,传给前端的Flex也是乱码。原因:Hibernate的基础还是JDBC,所以一样需要设置characterEncoding! 解决方法: 在hibernate.cfg.xml中应该这样写 jdbc:mysql://localhost:3306/test?useUnic ode=true&characterEncoding=UTF-8 如果用hibernate.properties #hibernate.connection.url jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8 ps:处理中文的话,characterEncoding用GBK一样可以。 但字节编码问题最好的解决方法还是统一使用UTF-8 ----- 我的项目是: jdbc:mysql://localhost:3306/myeshop?useUnicode=tru e&characterEncoding=UTF-8 2.同样在spring里的applicationContext.xml里的数据库连接也要修改: 3.在Web.xml中配置encodingFilter过滤器,在web.xml中加入下面代码 encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encodingFilter

Navicat MySql中文乱码问题

navicat 数据库中文乱码问题 1.右键连接属性-->高级-->Encoding-->936(Simplified Chinese GBK) 去掉User MySql character set 选项 2.数据库安装目录 my.init 更改default-character-set=utf8 3.打开mysql client,进入后再输入show variables like "%char%";可查看更改字符集后的列表. | 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 | character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.1\share\chars 更改 set names utf8; 更改其中某一个 set @@character_set_database=utf8 set @@character_set_server=utf8 set @@character_set_results=utf8 set @@character_set_connection=utf8 set @@character_set_client=utf8 4.更改表与表字段字符编码方式 5.重启数据库

史上最全的PHP+MySql中文乱码解决方案

我相信PHPmyadmin里查看是乱码,调用出来的话肯定100%也是乱码。乱码问题其实也就是编码不一致导致的。要解决这个问题需要回顾乱码问题出现以前的操作是否使用的是同一种编码。 总之一句话,要解决PHP中文乱码最好最快的解决办法就是:页面申明的编码与数据库内部编码一致,如果页面申请的页码与数据库内部编码不一致时,就设定连接编码mysql_query(”SET NAMES XXX”); XXX为连接编码。一定可以解决乱码的问题。 在mysql+php程序开发中,总结了产生乱码原因: mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码. MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. 用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码. 如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码. PHP页面字符集不正确. PHP连接MYSQL数据库语句指定的编码不正确. 一.首先是PHP网页的编码 1. php文件本身的编码与网页的编码应匹配 a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charset=gb2312″),静态页面添加,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。 b. 如果欲使用utf-8编码,那么php要输出头:header(“Content-Type: text/html; charset=utf-8″),静态页面添加,所有文件的编码格式为utf-8。保存为utf-8可能会有点麻烦,一般utf-8文件开头会有BOM,如果使用 session就会出问题,可用editplus来保存,在editplus

数据库表中记录显示中文乱码解决

三种mysql建表乱码的解决方法 作者:温杰 MySql建表乱码问题,默认mysql建表格式为latin(瑞典语),如何设置为能够表示中文的数据库表使我们需要解决的一个很重要的数据库设计问题。 方法1、 在表中输入中文会乱码,需要在建表的时候如下 CREATE TABLE Q3_City ( city_id INTEGER NOT NULL, name VARCHAR(64)NOT NULL, region_id INTEGER NOT NULL, user_id INTEGER NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8COLLATE=utf8_unicode_ci; 最后一段添加表的编码格式,该操作比较繁琐。 方法2、在安装mysql的时候没有指定编码格式 可以在https://www.sodocs.net/doc/3515996194.html,f的mysqld字段下加入 default-character-set=utf8 default-storage-engine=MyISAM default-collation=utf8_bin init_connect='SET NAMES utf8' 有人这么做,但是本人的虚拟机Linux系统下的MySql不能通过此方法来实现。 方法3、 在安装mysql的时候指定编码格式(建议大家使用这种方法)如果指定了编码格式第2种方法则无效。 ./configure--prefix=/usr/local/mysql--enable-assembler--with-mysqld-ldflags=-all-static --with-charset=utf8 如上在编译mysql的时候添加编码格式,以后在该库中添加新表默认格式都为UTF8。

彻底解决MySql在UTF8字符集下乱码问题 - mysql

为了顺利的开发一个多语言的国际化J2EE程序,需要修改数据库字符集,我的做法如下: 安装MySq时选择字符集为UTF-8 修改MySql安装目录下的my.ini中配置的默认编码: 该文件中有两处这样的配置:default-character-set=latin1 将这两处改成:default-character-set=utf8 新建数据库需指定字符集: UTF8: CREATE DA TABASE mmtye DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 在命令行查看字符集编码:show variables like '%char%'; 会看到如下信息: 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 character_sets_dir | D:\MySQL\share\charsets\ 以上内容在重启MySql后也一直有效,无需每次启动数据库都要指定。 A、为了在命令行下能正确查看中文,命令行下执行: set character_set_results=gbk; B、若需要在windows命令行执行insert、update,则执行: set character_set_client=gbk; A、B 两个命令重启数据库前有效,重启后就失效了。

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:数据库表字符集。 优先级依次增加。所以一般情况下只需要设置character-set-server,而在创建数据库和表时不特别指定字符集,这样统一采用character-set-server字符集。 character-set-client :客户端的字符集。客户端默认字符 集。当客户端向服务器发送请求时,请求以该字符集进行编character-set-results :结果字符集。服务器向客户端返回 结果或者信息时,结果以该字符集进行编码。在客户端,如果没有定义character-set-results,贝U采用character-set-client 字符集作为默认的字符集。所以只需要设置 character-set-client 字符集。要处理中文,贝可以将character-set

相关主题