这里主要说三个方面:
一、mac的系统编码;
二、mysql字符编码(解决中文乱码和中文变 ?号);
三、编码引起的文件乱码问题。
第一个容易:
1,终端输入:locale,全是 zh_CN.UTF-8 属于正常,就别改了!
2,不是的话就会各种乱码,接着往下走:vim ~/.bash_profile 或者是 touch .bash_profile
写入 LC_ALL="zh_CN.UTF-8" 保存退出。
3,过五分钟再 locale 一下,就能改好。(当时我退出来查看还没改过来,五分钟后它自动改过来了,至少确认了第二部操作确实有效)
第二个mysql的默认字符集:
1,先说终极方法,可以实现一劳永逸:
linux,mac环境,修改mysql配置文件/etc/my.cnf:
[mysqld]
character_set_server=utf8
[client]
default_character_set=utf8
[mysql]
default_character_set=utf8
win环境,修改mysql配置文件/etc/my.ini,文件不存在,则将my-default.ini 复制一下并改名为my.ini:(同上修改)
2,mamp for mac 这个集成有些坑爹,配置文件找不到,/etc 下新建也没用,那么就用别的方法:
mysql> SHOW VARIABLES LIKE '%char%'; #查看数据库编码
默认就是瑞典latin1
以下是换成我们自己的编码
进入某个库,执行 SET NAMES 'utf8' ,再次查看就会发现改好了:
这个方法会在重启数据库时被覆盖,需要每次开启数据库时执行一次!
下面普及一下有关mysql编码的知识,收集来的知识整理一下而已,各位请绕道:
SETNAMES 'utf8';
它相当于下面的三句指令:
SETcharacter_set_client = utf8;
SETcharacter_set_results = utf8;
SETcharacter_set_connection = utf8;
创建数据库时编码设置
mysql> create database namecharacter set utf8;
创建表时编码设置
CREATE TABLE `tablename` (`id`int(10) unsigned NOT NULL auto_increment,PRIMARY KEY (`id`)) DEFAULTCHARSET=utf8;
修改数据库成utf8.
mysql> alter database dbname set utf8;
修改表默认用utf8.
mysql> alter table tablename set utf8;
修改字段用utf8
mysql> alter table tablename field_name varchar(50) CHARACTER SET utf8;
Windows可在服务管理器中操作,也可使用命令行:
net stop mysql 回车
net start mysql 回车
Linux下面可是用 service mysql restart
第三个文件解压乱码:(这是我以前的问题,最近暂时用不到,就先放着不写了)
网上推荐使用 The Unarchiver 解压就能解决,我系统还是10.10,安不了,我用 RAR extractor lite 解压器也完美解决了 !