mysql 中文乱码 解决方法集锦

当使用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时,随着数据量的逐渐增大,我们可能会面临MySQL大表的优化问题。本文将介绍几种常见的MySQL大表优化方案,以及相应的示例说明。 优化方案一:水平分表 水平分表是将一张大表拆分成多张小表,各个小表之间的结构完全相同,但是它们分别存储不同的数据。通过水平分表,可以将表的行数分散到多个物理表中,从而减少单张表的数据量…

    database 2023年5月19日
    00
  • Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高

    Mysql数据库中datetime、bigint、timestamp都可以用来存储时间,但它们有不同的特征和适用场景,效率也不同。 datetime: datetime是Mysql用来存储日期和时间的一种数据类型,占用8个字节,可以表示的时间范围大约为1000至9999年,精度为秒。datetime类型存储时间的优点在于精度高,可以精确到秒。缺点在于存储空间…

    database 2023年5月22日
    00
  • SQL Server中锁的用法

    SQL Server中锁的用法是保证多个用户同时进行修改时,不会出现数据冲突的关键。锁可以分为共享锁和排他锁两种类型,分别是控制多个用户同时读取和写入数据库的一种机制。 在SQL Server中,共享锁和排他锁可以通过以下方式创建: 共享锁(S锁):通过SELECT语句创建,用于保证并发读取数据时不会出现数据冲突。一个共享锁允许多个用户同时读取一个资源。 示…

    database 2023年5月21日
    00
  • 浅谈RHEL7和RHEL6的主要变化

    浅谈RHEL7和RHEL6的主要变化 操作系统内核升级 RHEL7相比RHEL6主要变化在于升级了内核版本,具体来讲,RHEL6的内核版本是2.6.x,而RHEL7的内核版本是3.10.x。这一升级在性能和安全性方面带来了显著的提升。 例如,在传统的系统调用中,读写文件的操作通常都是同步的,也就是说在读写文件时需要一直等待I/O操作完成才能执行下一条指令。而…

    database 2023年5月22日
    00
  • SQL查询语句通配符与ACCESS模糊查询like的解决方法

    下面是SQL查询语句通配符与ACCESS模糊查询like的解决方法的完整攻略: 1. SQL查询语句通配符 在SQL中,通配符是搜索匹配模式中用来替代字符的特殊字符。通配符可用于建立模式搜索的条件。常用的SQL通配符有以下两种: %:代表任意字符出现任意次数。例如,”S%”可以匹配”The Shawshank Redemption”, “Saving Pri…

    database 2023年5月21日
    00
  • JSP动态实现web网页登陆和注册功能

    JSP(Java Server Pages)是一种使用Java编程语言编写的动态Web页面技术。在JSP中,使用Java代码、HTML、CSS、JavaScript和JSP页面特定元素来开发Web应用程序。 下面是实现JSP动态实现Web网页登陆和注册功能的完整攻略: 第一步:搭建Web应用程序 要实现令人担心的Web登录和注册功能,必须首先建立您的Web应…

    database 2023年5月22日
    00
  • MySQL如何更改数据库数据存储目录详解

    关于MySQL如何更改数据库数据存储目录,我们可以分以下几步来进行详细讲解: 1. 查看当前数据存储目录 首先我们需要通过以下命令来查看当前MySQL的数据存储目录: show variables like ‘%datadir%’; 该命令会返回如下类似的结果: +—————+—————–+ | Variable_n…

    database 2023年5月22日
    00
  • Linux服务器的一些基本应用

    Linux服务器的一些基本应用攻略 在Linux服务器上,有一些常用的基本应用程序可以帮助我们更好地管理和维护服务器。以下是一些重要的应用程序和命令,在本文中将进行详细讲解。 SSH SSH是远程登录到Linux服务器的标准方式,它通过使用加密的网络协议来保护数据的安全传输。在安装SSH之后,可以使用如下命令来连接到远程服务器: ssh username@h…

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