当前位置: 首页 > 工具软件 > mysqldump-php > 使用案例 >

mysql uroot p utf8_使用mysqldump转换mysql数据库字符编码为utf8

郦祺
2023-12-01

手头上有一台mysql数据库服务器,因为历史原因,mysql数据库的字符编码为latin1,但PHP程序使用的是utf8字符编码,所以磨途歌每次从mysql数据库中读取数据,都得向mysql数据库发送设置字符集的命令:mysql_query("SET NAMES latin1");

虽然PHP通过设置字符编码能解决乱码问题,但是用phpmyadmin浏览mysql数据库,中文依然显示为乱码,很不方便管理。

最近在整理服务器,备份好mysql数据库后,就开始动手转换mysql数据库字符编码,把latin1编码的数据转成utf8编码:

一)用mysqldump工具导出数据库mysqldump --all-databases --default-character-set=latin1 -u root -p > all_db.sqlmysqldump --databases mo2g --default-character-set=latin1 -u root -p > mo2g.sqlmysqldump参数mysqldump参数说明

--all-databases导出mysql数据库服务器上所有的数据库

--databases导出mysql数据库服务器上指定的数据库

--default-character-set设置连接mysql数据库服务器的字符编码

-u设置登录mysql数据库服务器的用户名

-p如果用户名的密码不为空,必须添加该参数

-E合并insert,能有效压缩sql文件大小

-R备份存储过程

-d不导出数据

-t不导出表结构

二)修改导出的sql文件,有点类似下边,虽然mo2g这台服务用的是MariaDB数据库,但同样使用于mysql数据库。-- MySQL dump 10.14  Distrib 5.5.32-MariaDB, for Linux (x86_64)

--

-- Host: localhost    Database: mo2g

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

-- Server version   5.5.29-MariaDB

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES latin1 */;

/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;

/*!40103 SET TIME_ZONE='+00:00' */;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--

-- Current Database: `mo2g`

--

把第10行的代码改一下/*!40101 SET NAMES latin1 */;

改成/*!40101 SET NAMES utf8 */;

三)最后再将修改的sql文件导入MariaDB数据库,mysql数据库同样适用。mysql -u root -p 

如果没有显示任何错误,就说明已经成功把MariaDB数据库或mysql数据库由latin1字符编码转换成utf8编码了。

现在,就用phpmyadmin连接MariaDB数据库或mysql数据库看看吧,是不是成功了?

 类似资料: