mysql的中文亂碼,大多是因為mysql的編碼選擇造成的。
以mysql的兩個相同結構的表間進行數據遷移為例,做了三種情況的測試,并提出解決亂碼的解決方法如下:
Migration between MySQLs
1)
Migration between character set : utf8
Amend my.ini (2 positions)
default-character-set=latin1
=>
default-character-set=utf8
2)
Migration between character set : origin is utf8 ==>
the
destination is latin1
Alter destination:
-
alter database [db_name] default character set utf8;
-
alter table [table_name] default character set
utf8;
- alter table [table_name] change [field_name]
[field_name] [filed type] varchar(45) character set utf8;
users(id, user_name)
alter table users change user_name user_name varchar(45)
character set utf8;
3)
Migration between character set : origin is
latin1 ==>
the destination is utf8
If the origin is latin1, cannot
insert Chinese Character.