mysql 中文乱码 解决方法集锦

yizhihongxing

当使用mysql数据库时,中文数据可能会出现乱码情况。下面是解决mysql中文乱码问题的方法集锦:

设置mysql字符集

在mysql数据库中,字符集分为两部分:一是服务器字符集,也叫默认字符集;二是数据库字符集,也叫库表字符集。如果两部分字符集不一致,中文数据就会出现乱码。所以,第一步是要设置服务字符集和库表字符集。

设置服务字符集

可以通过修改mysql配置文件/etc/mysql/my.cnf来实现。找到[mysqld]节点,在这个节点下添加下面的语句:

[mysqld]
character-set-server=utf8

这里配置的是服务字符集为utf8。注意,还需要将所有库表的字符集都设置为utf8,否则中文数据仍然会出现乱码。

设置库表字符集

创建数据库时设置库表字符集

创建数据库时可以设置库表字符集,如下所示:

CREATE DATABASE `example` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

修改已有数据库库表的字符集

修改库表字符集有两种方法:一是通过SQL命令行修改,另一种是通过图形化界面修改。这里介绍SQL命令行的修改方式。

修改数据库字符集
ALTER DATABASE `example` CHARACTER SET utf8 COLLATE utf8_general_ci;
修改表字符集
ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci

修改数据源配置

使用不同的编程语言连接mysql数据库时,需要配置不同的数据源,比如Java需要配置数据源为utf8。以下是Java的一个例子:

String url="jdbc:mysql://localhost:3306/example?useUnicode=true&characterEncoding=UTF-8&user=xxx&password=xxx";
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection(url);

这里的url中有3个参数需要关注:"useUnicode=true"表示使用Unicode编码;"characterEncoding=UTF-8"表示字符编码为UTF-8;最后一个参数是用户名和密码。

示例说明

示例1:使用Java连接mysql数据库

Java代码如下所示,首先连接mysql数据库,然后将中文数据插入到表中,最后读取表中所有数据并输出。

String url="jdbc:mysql://localhost:3306/example?useUnicode=true&characterEncoding=UTF-8&user=xxx&password=xxx";
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection(url);

Statement stmt=con.createStatement();
String sql="CREATE TABLE `user` (`id` INT NOT NULL AUTO_INCREMENT,`name` VARCHAR(45) NULL,PRIMARY KEY (`id`))ENGINE=InnoDB DEFAULT CHARSET=utf8;";
stmt.executeUpdate(sql);

sql="INSERT INTO `user`(`name`) VALUES ('张三'),('李四'),('王五')";
stmt.executeUpdate(sql);

ResultSet rs=stmt.executeQuery("SELECT * FROM `user`");
while (rs.next()){
    System.out.println("id:"+rs.getInt(1)+",name:"+rs.getString(2));
}

rs.close();
stmt.close();
con.close();

示例2:使用Python连接mysql数据库

Python代码如下所示,同样是连接mysql数据库,然后将中文数据插入到表中,最后读取表中所有数据并输出。

import mysql.connector

cnx = mysql.connector.connect(user='xxx', password='xxx',
                              host='127.0.0.1',
                              database='example',
                              charset='utf8')
cursor = cnx.cursor()

add_user = ("INSERT INTO `user`(`name`) VALUES (%s)")

data = [('张三',),('李四',),('王五',)]

cursor.executemany(add_user, data)
cnx.commit()

query = ("SELECT * FROM `user`")

cursor.execute(query)

for (id, name) in cursor:
  print("id:{}, name:{}".format(id, name))

cursor.close()
cnx.close()

以上就是mysql中文乱码解决方法的完整攻略,通过设置mysql字符集和修改数据源配置,可以有效避免中文数据出现乱码问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql 中文乱码 解决方法集锦 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • MySql各种查询方式详解

    MySql各种查询方式详解 前言 MySql是一种开源的关系型数据库管理系统,具有跨平台、高性能、高可靠性等特点,被广泛应用于Web开发及其他领域。在MySql中,查询是最基本的操作之一,而各种不同的查询方式也给我们在实际使用中带来了不同的便利。本文将介绍MySql中各种常见的查询方式,供读者参考。 简单查询 简单查询是指只涉及到单个表的查询方式,常用的操作…

    database 2023年5月22日
    00
  • 如何使用Python从数据库中导出数据并将其保存到CSV文件中?

    以下是如何使用Python从数据库中导出数据并将其保存到CSV文件中的完整使用攻略。 使用Python从数据库中导出数据并将其保存到CSV文件中的前提条件 使用Python从数据库中导出数据并将保存到CSV文件中前,需要确已经安装并启动了支持导出数据的数据库,例如或PostgreSQL,并且需要安装Python的相数据库驱动程序,例如mysql-connec…

    python 2023年5月12日
    00
  • 在SQL Server的try…catch语句中获取错误消息代码的的语句

    在 SQL Server 中,try…catch 语句可以帮助我们捕获错误并对错误进行相应的处理,其中包括获取错误消息代码。下面是获取错误消息代码的完整攻略: 1. 使用 ERROR_NUMBER 函数 Error_Number() 函数用于返回当前错误的错误代码。使用该函数可以在 catch 块中获取错误消息代码,如下所示: BEGIN TRY — …

    database 2023年5月21日
    00
  • 一条sql语句完成MySQL去重留一

    下面是详细的攻略。 在MySQL中进行去重留一可以使用distinct关键字或者group by语句。使用distinct关键字通常是在查询结果列中只需要一列去重的情况下使用,而使用group by则可以在需要对多个列进行去重的情况下使用。下面分别对两个方法进行讲解。 方法1:使用distinct关键字 语法 SELECT DISTINCT column_n…

    database 2023年5月22日
    00
  • SQL SERVER 日期格式转换详解

    SQL SERVER 日期格式转换详解 在SQL SERVER中处理日期是很常见的一个需求,但是不同的应用场景和数据格式会导致需要进行日期格式转换。本文将详细讲解SQL SERVER日期格式转换的方法和实例。 SQL SERVER日期格式 在SQL SERVER中,日期类型有多个格式,如下表所示: 数据类型 说明 存储范围 DATETIME 日期和时间 由“…

    database 2023年5月22日
    00
  • pymongo为mongodb数据库添加索引的方法

    添加索引是提高MongoDB数据库查询性能的一种有效方法,而Pymongo是Python语言操作MongoDB的工具库。下面介绍Pymongo为MongoDB添加索引的方法攻略。 1. 创建客户端连接 要使用Pymongo操作MongoDB,需要创建一个连接MongoDB的客户端。可以通过以下代码创建客户端连接: from pymongo import Mo…

    database 2023年5月22日
    00
  • Windows Server 2012 R2 服务管理器自启动功能的关闭方法

    以下是关于关闭Windows Server 2012 R2服务管理器自启动功能的攻略。 1. 背景介绍 在Windows Server 2012 R2操作系统中,服务管理器(Service Manager)是一个重要的管理工具,它可以用于管理系统中的各种服务。但是,在某些情况下,服务管理器会影响系统的响应速度和性能,因此需要关闭它的自启动功能。 2. 关闭服…

    database 2023年5月21日
    00
  • MySQL5.6升级5.7时出现主从延迟问题排查过程

    MySQL5.6升级5.7时出现主从延迟问题排查过程可以分为以下几个步骤: 1. 按顺序检查升级步骤 首先,需要确认升级步骤是否正确,包括备份数据、关闭应用、停止MySQL服务、安装新的MySQL版本、导入数据、修改配置文件、启动新的MySQL服务等。如果升级步骤缺失或不正确,可能会导致主从延迟问题。 2. 检查主从复制配置 其次,需要检查主从复制配置是否正…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部