成功解决MYSQL的乱码问题!

转载 2007年10月16日 01:19:00
原贴:http://faq.csdn.net/read/216877.html

  • 问题内容:成功解决MYSQL的乱码问题!
  • 原讨论链接:http://community.csdn.net/expert/topicview1.asp?id=5013925
  • 所属论坛:MySQL/Postgresql     审核组:其他数据库开发
  • 提问者:Davelu     解决者:davelu
  • 感谢:mathematician
  • 关键字:数据库 其他数据库开发 MySQL/Postgresql 升级 乱码 备份 导入 字符集 mysql phpmyadmin 阔别 校对
  • 答案:

    这几天在升级论坛,数据库乱码的问题最常见,尤其是从MYSQL 4.0升到MYSQL 5。
    我在升级的时候也碰到这个问题,经过无数次的测试,终于解决了这个问题。

    使用的是GBK,在备份原数据库时,使用:

    mysqldump -uroot -p --default-character-set=gbk --skip-opt test >test.sql

    在phpmyadmin中建立新的数据库,在phpmyadmin中设置:

    language: chinese simplified (zh-utf-8)
    MYSQL字符集: UTF-8 Unicode (utf8)
    MYSQL连接校对: utf8_general_ci

    在导入SQL数据库时,使用如下命令:
    mysql -uroot -p --default-character-set=utf8 -f test<test.sql

    然后你就能在phpmyadmin中见到阔别已久的中文了,而不再是讨厌的???????? 了。

    ---------------------------------------------------------------
    补充:

    上文中在
    MYSQL连接校对: utf8_general_ci
    的后面应该加一句:

    -----------------------------------------------
    建立的时候在phpmyadmin中用:
    CREATE DATABASE `test` DEFAULT CHARACTER SET gbk;

    -----------------------------------------------

    同理,如果原来是用laint1建立的,只要备份出来的时候:

    mysqldump -uroot -p --default-character-set=laint1 --skip-opt test >test.sql

    其它步骤相同,这样就转为了GBK,以后也都统一使用相同的编码了。

    对于MYSQL不熟的朋友,希望能用这帖让你有所借鉴。
    ------------------------------------------------
    继续这个话题。

    原来我有一段程序是汉化国外的。在MYSQL4里面,如果用phpmyadmin中看是乱码,但在客户端调用出来是中文。
    这说明只要你写入是一种编码,调用是同样的,数据库里是乱码没关系。
    后来在升级DZ5时,我把数据库也升到MYSQL5,这时就想把原来laint1转成gbk了。
    按上述的方法转完,那个汉化程序里出来的却是乱码。

    由于只是涉及数据库时出现乱码,所以肯定是MYSQL的问题。

    最后在那段程序的:
    mysql_select_db($db_name, $this->link)

    前面加上:

    $this->query("SET NAMES 'utf8'"); 

    就基本正确了。

    有一个页面出现了:

    Server Error: (1406) Data too long for column 'eventDesc' at row 1

    后来发现并不是字符超长了,而是由于MYSQL 5中的CONCAT函数的问题。

    在CREATE TEMPORARY TABLE hlstats_EventHistory中
    insertEvents("TeamBonuses", "
                    SELECT
                            '队伍奖励',
                            <table>.eventTime,
                            CONCAT('其战队受到点 ', bonus, '分奖励,原因 /"', hlstats_Actions.description, '/"'),
                            hlstats_Servers.name,
                            <table>.map
                    FROM
                            <table>
                    LEFT JOIN hlstats_Actions ON
                            <table>.actionId = hlstats_Actions.id
                    LEFT JOIN hlstats_Servers ON
                            hlstats_Servers.serverId = <table>.serverId
                    WHERE
                            <table>.playerId=$player
            ");
    这里的bonus是一个int(11)的字段,和中文连接造成中文乱码。

    为了解决这个问题,最后是用ASCII(CHAR(bonus))来解决了,实在是晕。。。

  • 评价: 有价值给朵鲜花(93) 无价值扔个鸡蛋(20)
 

彻底解决mysql中文乱码的办法

原文链接:http://www.pc6.com/infoview/Article_63586.html MySQL会出现中文乱码的原因不外乎下列几点: 1.server本身设定问题,例...
  • x775229836
  • x775229836
  • 2016年07月05日 15:18
  • 12679

MySQL 绿色版 乱码解决方法

mySQL的编码格式(关键一步)这一步我也是在度娘上找的, 首先在mySQL根目录中,把my-default.ini拷贝一份在根目录下,取名为my.ini,在my.ini中设置如下几步: 第一步:...
  • a_lonely_dancer
  • a_lonely_dancer
  • 2016年10月15日 12:43
  • 447

解决linux环境mysql中文乱码问题

操作环境: ubuntu 14.04  Mysql 5.5.43 一. 问题描述 登录后查看mysql默认编码:  mysql> show variables like 'ch...
  • Mark_LQ
  • Mark_LQ
  • 2015年07月31日 18:43
  • 1073

解决mysql中文乱码

原文:http://blog.csdn.net/u012410733/article/details/61619656 mysql是我们项目中非常常用的数据型数据库。但是因为我们需要在数据库保存...
  • u011956172
  • u011956172
  • 2017年12月25日 14:50
  • 144

Hive数据仓库--Hive导出至Mysql中文乱码问题

也是目前遇到的比较棘手的问题之一,虽然最终解决的时候,并没有修改过多的东西,但是在这个过程中也折磨了近两天的时间。不过这个过程中,查阅了网络上以及书上等等的资料,对于Sqoop导出Hive数据到Mys...
  • wangyang1354
  • wangyang1354
  • 2016年11月15日 16:24
  • 2184

如何解决MyEclipse中的乱码问题

 一、设置新建常见文件的默认编码格式,也就是文件保存的格式。 Window-->Preferences-->General -->content Types 在右侧窗口中展开每一个子项,依...
  • hongya1109110121
  • hongya1109110121
  • 2014年02月28日 23:58
  • 2745

彻底解决mysql中文乱码

mysql是我们项目中非常常用的数据型数据库。但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况。下面就来介绍一下如何彻底解决数据库中文乱码情况。...
  • u012410733
  • u012410733
  • 2017年03月12日 16:19
  • 13377

浅谈事务和事务的隔离级别

原来一直听说事务,自己也用过,可就是没有深入的总结过,几天好好总结一下,把自己理解的事务跟大家说一说: 什么是事务:事务是数据库中保证交易可靠的机制 事务的语句 a....
  • kunpeng90
  • kunpeng90
  • 2016年12月03日 21:09
  • 112

mysql中文乱码解决方案

一 问题描述 当往表里插入中文数据时,报错: mysql> insert into t(id,nam) values(1,'丹丹'); ERROR 1366 (HY000): Incorrect st...
  • YABIGNSHI
  • YABIGNSHI
  • 2016年12月07日 14:38
  • 487

数据库中文乱码解决方案总结,tomcat+mysql+hibernate

数据库中文乱码解决方案汇总
  • chenjiazhu
  • chenjiazhu
  • 2016年07月15日 10:35
  • 1655
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:成功解决MYSQL的乱码问题!
举报原因:
原因补充:

(最多只允许输入30个字)