Ubuntu 16.04中如何修改mysql的编码为utf-8

本文介绍了如何解决在云服务器上使用MySQL遇到的乱码问题,包括查看和修改MySQL编码的方法,以及通过配置文件更改编码的具体步骤。

积累,小白也有大神梦

在云服务器上搭建mysql数据库的时候,发现默认的编码并不是utf-8,所以在对数据库进行发布的时候,遇到了乱码的问题。只有将mysql的编码修改之后,然后把表删除,在重新建表才摆脱了这个问题。这里对修改mysql的编码做一简单总结。

一、查看mysql的编码

登录mysql以后,输入:
show variables like ‘%character%‘;
即可显示mysql的编码。默认情况下,应该不是utf-8,所以需要对它进行修改。

二、修改mysql编码

修改mysql编码的方式有两种,第一种是登录mysql之后,在命令行输入命令,对编码进行修改。但是我尝试这种方法,在我重新登录之后,编码依然如此没有被修改。第二中方法是在mysql的配置文件中修改编码。

第一种方法

当我们从命令行登录到mysql之后,我们通过查看mysql编码的命令查看mysql中的编码情况。然后通过下面命令对它进行修改。
set 所要修改的属性名称=”utf8”
例如: SET character_set_client = utf8;
注意:是utf8而不是utf-8或utf_8
修改结束之后,我们可以通过原本的查看编码命令查看,这里已经将它修改了过来。但是在我这里只是临时行的,在你哪里我就不妄加揣测了。
当然我们也可以通过命令修改指定的数据库编码,或者指定的表、字段的编码,也可以创建数据库的时候指定编码,命令如下:
alter database 数据库名 character set utf8; //修改数据库编码
alter table 表名 character set utf8; //修改表编码
alter table 表 modify 字段名 字段类型 CHARACTER SET utf8;//修改字段编码
create database 数据库名 character set utf8; //创建数据库时指定编码
create table 表名 …….. DEFAULT CHARSET=utf8;//创建表时指定编码

第二中方法

修改配置文件,配置文件是/etc/mysql/my.cnf(windows下好像配置文件在mysql的安装路径下的my.ini文件里,似乎现在把这个文件改名了,你可以在把它改成my.ini):
在[client]下追加:
default-character-set=utf8
在[mysqld]下追加:
character-set-server=utf8
在[mysql]下追加:
default-character-set=utf8
然后保存并退出。

重启服务:
service mysql restart 或
/etc/init.d/mysqlrestart

从新登录查看,即可发现已经被改变。

总结:最好两种方法,都一起试试,这样可以保证万无一失。

<think>我们正在回答用户的问题:如何永久修改Linux系统的字符集。 根据引用[2]和引用[3]的内容,永久修改系统字符集需要修改系统的配置文件,并且不同的Linux发行版可能配置文件不同。 引用[2]提到修改文件`/etc/sysconfig/i18n`(适用于传统的系统,如CentOS 6),而引用[3]提到修改`/etc/locale.conf`(适用于使用systemd的系统,如CentOS 7及以上)。 因此,我们需要根据用户的实际系统版本来确定配置文件位置。同时,修改后需要重新加载配置文件或重启系统。 步骤总结如下: 1. 确定当前系统的发行版和版本,以选择正确的配置文件。 2. 编辑相应的配置文件,设置LANG等环境变量。 3. 重新加载配置文件或重启系统使更改生效。 下面详细说明: </think> ### Linux系统永久修改字符集的方法 #### 🛠️ 永久修改步骤(按系统类型区分) ```mermaid graph TD A[确定系统类型] --> B{使用systemd?} B -->|是| C[修改/etc/locale.conf] B -->|否| D[修改/etc/sysconfig/i18n] ``` ##### 1. **Systemd系统(CentOS 7+/Ubuntu 16.04+)** ```bash # 编辑配置文件 sudo vi /etc/locale.conf # 设置内容 LANG="zh_CN.UTF-8" # 主字符集 LC_ALL="zh_CN.UTF-8" # 覆盖所有locale设置 ``` ##### 2. **传统系统(CentOS 6等)** ```bash # 编辑配置文件 sudo vi /etc/sysconfig/i18n # 设置内容(示例) LANG="zh_CN.UTF-8" SUPPORTED="zh_CN.UTF-8:zh_CN.GB18030:zh_CN:zh:en_US.UTF-8" ``` ##### 3. **使配置生效** ```bash # 立即加载配置(无需重启) source /etc/locale.conf # systemd系统 source /etc/sysconfig/i18n # 传统系统 # 验证修改 echo $LANG # 应显示 zh_CN.UTF-8 ``` #### 🔍 配置说明 | 配置项 | 作用说明 | |----------------|--------------------------------------------------------------------------| | `LANG` | 系统默认字符集(优先级低于LC_*)[^2] | | `LC_ALL` | **最高优先级**,覆盖所有LC_*设置(建议保持与LANG一致)[^2] | | `SUPPORTED` | 声明系统支持的字符集列表(传统系统特有)[^2] | #### ⚠️ 注意事项 1. **权限要求**:需使用`sudo`或root账户编辑系统配置文件 2. **编码验证**:修改后执行`locale -a`确认字符集已安装 3. **兼容问题**:避免混合使用不同字符集(如`zh_CN.UTF-8` + `en_US.ISO-8859-1`) 4. **服务影响**:关键服务(如MySQL)可能需要单独配置字符集 #### ✅ 推荐配置方案 ```bash # /etc/locale.conf 最佳实践 LANG="zh_CN.UTF-8" LC_CTYPE="zh_CN.UTF-8" LC_NUMERIC="en_US.UTF-8" # 数字格式用英文 LC_TIME="en_US.UTF-8" # 时间格式用英文 LC_COLLATE="zh_CN.UTF-8" ``` > 📌 此配置兼顾中文显示与开发兼容性[^3] ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值