因为数据库设计不当 导致里面100多个表默认的字符都是latin1 如何将这些表改成UTF8 谢谢各位了 最好有具体的步骤表中 有a,b,c这类表

解决方案 »

  1.   

    1。 先用mysqldump 将这个数据库导出,比如导出文件 sss.sql。
    2。 删除这个数据库
    3。用文件编辑工具,将 sss.sql 中的相关表的 create table 语句中的charset 改为utf8
    4。 msyql -uroot -pxxx dbx < sss.sql 重新导入数据库。
      

  2.   

    表是否有数据?
    如果有数据的话,得把数据先备份出来,如:
    mysqldump -uroot -ppassword db_name > d:\db_bak.sql;如果db_bak.sql文件不大的话,直接用ultraedit打开,替换掉字符集中的latin1为utf8即可,然后再导入前面的备份文件: mysql -uroot -ppassword db_name < d:\db_bak.sql;
    如果这个备份文件很大的话,那只能自己写个存储过程,根据information_schema.tables系统表里面的信息循环,用动态语句进行truncate table 、alter table... default charset 'utf8' ,然后再导入前面的备份文件: mysql -uroot -ppassword db_name < d:\db_bak.sql;(注意:如果是这种方式的话,那要在mysqldump备份时加个参数 "--no-create-info" )
      

  3.   

    直接操纵字符进行转换 看起来比较繁琐也容易出现问题 首先你要了解两种编码格式的定义  进行转换那么现在已经有类似的转换工具 就节省了你的手动转换 想Windows的文本工具 以及一些文本转换工具
      

  4.   

    这么多表要导入,不能直接修改database的字符么?
      

  5.   

    直接修改database 的默认字符集,只是修改了 默认字符集 对已经存在的表和数据并不起作用。
      

  6.   

    直接修改database 的默认字符集,只是修改了 默认字符集 对已经存在的表和数据并不起作用。
    参考
      

  7.   

    还有一个问题是我把默认的字符串改成了UTF8 为什么导入进MYSQL的数据都变成乱码了。
      

  8.   

    +-------------+-------------+---------------+------------------+--------------+----------
    --+----------+------------+------------+----------------+
    | random_code | dealer_code | dealer_number | auto_sales       | name         | Postcode
      | brand    | model_code | pay_date   | swept_capacity |
    +-------------+-------------+---------------+------------------+--------------+----------
    --+----------+------------+------------+----------------+
    | 0.207053732 | 3081A       | 086           | 脡脧潞拢鹿脷脣脡         | 脨铆脠脢脨脟
              | L-AETZKC | RC1  | 脠帽脰戮     |            | 2005-11-8  | 2.5L
    | 0.321177468 | 30811       | 089           | 脡脧潞拢驴陋脗隆         | 脰脫脪氓禄陋
              | GRX122L-AETZKC | RB0  | 脠帽脰戮     |            | 2005-11-11 | 2.5L
    | 0.269732266 | 30812       | 088           | 脡脧潞拢潞脥脭拢         | 脧脛鹿煤禄陋
              | 1972658 | GRX122L-AETZKC | RB0  | 脠帽脰戮     |            | 2005-11-9  | 2.
    | 0.183729005 | 3081A       | 086           | 脡脧潞拢鹿脷脣脡         | 脥玫脕谩路脡
              | | GRX122L-AETZKC | RC0  | 脠帽脰戮     |            | 2005-11-16 | 2.5L
    | 0.131892597 | 30814       | 091           | 脡脧潞拢脫脌麓茂         | 脠卯脨脣
              | X122L-AETZKC | RC0  | 脠帽脰戮     |            | 2005-11-16 | 2.5L
    +-------------+-------------+---------------+------------------+--------------+----------只是运行了这个语句 alter database nationwidedata character set utf8;
      

  9.   

    1。 先用mysqldump 将这个数据库导出,比如导出文件 sss.sql。
    c:> mysqldump -uroot -ppassword db_name > d:\sss.sql;2。 删除这个数据库
    mysql> drop database db_name 3。用文件编辑工具,将 sss.sql 中的相关表的 create table 语句中的charset 改为utf8
    winword.exe, 查找替换4。 msyql -uroot -pxxx dbx  < sss.sql 重新导入数据库。建议看一下官方文档备份这一章,有详细的例子和说明。
      

  10.   

    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码