首页
学习
活动
专区
圈层
工具
发布

mysql 存储中文字符

基础概念

MySQL 是一个关系型数据库管理系统,广泛用于存储和管理数据。在 MySQL 中存储中文字符涉及到字符集(Character Set)和排序规则(Collation)的概念。

相关优势

  1. 支持多语言:正确配置字符集后,MySQL 可以存储和显示多种语言的字符,包括中文。
  2. 数据完整性:使用正确的字符集可以确保数据的完整性和准确性,避免乱码问题。

类型

MySQL 支持多种字符集,常见的有:

  • utf8:支持大部分 Unicode 字符,但不支持所有字符(如 emoji)。
  • utf8mb4:是 utf8 的扩展,支持所有 Unicode 字符,包括 emoji。
  • gbk:主要用于简体中文环境。
  • gb2312:较旧的简体中文字符集。

应用场景

  • 国际化应用:需要支持多种语言的应用,如网站、应用程序等。
  • 中文内容管理:需要存储和显示中文内容的应用,如新闻网站、社交媒体等。

遇到的问题及解决方法

问题:为什么会出现乱码?

原因:

  1. 数据库字符集配置不正确。
  2. 表或列的字符集配置不正确。
  3. 连接数据库时字符集配置不正确。
  4. 数据导入导出时字符集不一致。

解决方法:

  1. 检查数据库字符集配置:
  2. 检查数据库字符集配置:
  3. 确保其值为 utf8mb4 或其他支持中文的字符集。
  4. 检查表和列的字符集配置:
  5. 检查表和列的字符集配置:
  6. 确保表和列的字符集为 utf8mb4。
  7. 连接数据库时指定字符集:
  8. 连接数据库时指定字符集:
  9. 或在应用程序中设置:
  10. 或在应用程序中设置:
  11. 数据导入导出时指定字符集: 导入数据时:
  12. 数据导入导出时指定字符集: 导入数据时:
  13. 导出数据时:
  14. 导出数据时:

示例代码

假设我们有一个表 users,需要存储中文用户名:

代码语言:txt
复制
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL
) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

插入数据:

代码语言:txt
复制
INSERT INTO users (username) VALUES ('张三');

查询数据:

代码语言:txt
复制
SELECT * FROM users;

参考链接

通过以上配置和方法,可以确保在 MySQL 中正确存储和显示中文字符。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

mysql字符集配置&mysql中文乱码

,也就是乱码字符。毫无疑问,这定然是mysql字符集的配置问题。找到了解决问题的方向,那么,自然就很好办了。...解决问题 我的问题是出现在ubntu上的,如果你是windows用户,那么直接去安装mysql的根目录找配置文件就好了,修改方式和ubuntu上的是一样的。我接下来就会说明。...首先,进入到ubuntu的安装目录 cd /etc/mysql/ 如果你安装的是5.7的版本,我的就是5.7的,那么继续使用cd命令进入这个文件夹 cd mysql.conf.d 进去之后就会发现,这个其实是...mysql的各种配置文件所在的文件夹,现在你可以在百度上搜索到的mysql字符集解决办法好像都有点落后了,因为配置文件在无声无息的发生了位置改变。...结语 以上就是mysql的乱码配置过程,也可以是字符集配置过程,utf8这种编码格式是适用于所有的字符的,所以一般我们配置都是用的这种编码。

5.1K20

MySQL字符集中文乱码剖析

不同编码,字符集合不完全一样,存在某字符集的字符无法映射到另外一个字符集。 比如gbk编码中的中文字符,转成latin-1编码时,就找不到对应的二进制编码。...MySQL做字符集转换的时候,gbk中文字符->latin-1,很多就转成'?'号(0x3f),这种大集合转成小集合,基本是不可逆的。...MySQL执行过程 对一个 MySQL 的执行过程,字符集转换,一般涉及到一下三个步骤: 收到请求,将请求数据从 character_set_client ->character_set_connection...Character_set_client告诉MySQL Server,传入的是一个 gbk 编码的,'中'这个输入,当作了0xD6 D0传入。...其实很简单,表创建的字符集和set names都设置成同一个字符集,就基本可以满足输入数据不会在转换过程中失真,也就是说输入是什么,输出就是什么。建议有中文的都设置成utf8字符集,一劳永逸。

5.4K00
  • mysql存储字符使用char好还是varchar好

    节前,水一篇导读mysql存储字符串通常使用char/varchar, 那么使用哪个"更好"呢?...我们需要注意的是, char虽然是定长, 但定长的是字符数,而不是字节数, 存储的是字符编码之后的字节, 那么存储的空间就和字符集挂钩了;通常会使用utf8mb4字符集, 该字符集表示: Most Byte...存储长度对于存储变长字符,往往需要使用额外的空间来记录实际占用的长度, char的范围是0-255字符, varchar范围是0-65535字符,也就是需要1-3字节才能表示这个范围, 但mysql一个页最多就...但是有个例外, 若char使用的是单字节字符集(比如latin1),则char(n)存储范围是n - n*1, 即不需要存储元数据信息, 这时候会比同等的varchar少1字节的元数据....存储定长字符从存储空间来看, varchar几乎完败char, 那么如果存储的是定长字符呢? 毕竟char就是为定长字符设计的.

    30520

    关于mysql数据库存储中文乱码的问题

    原因及解决方法: 原因可能是mysql在安装的时候的设置不对。 解决方法,你无法改变供应商重新安装mysql的话,只能接受这样的事实。...实际上后来发现以下解决方案, phpmyadmin里MySQL字符集:cp1252 West European (latin1) ,解决乱码问题 使用虚拟主机空间上的phpmyadmin操作数据库的时候...,如果看到phpmyadmin首页上显示的MySQL 字符集为cp1252 West European (latin1),当我们导入数据时就会出现乱码,解决的方法是: 在phpmyadmin首页的右边有个...Language选项,把默认的中文 - Chinese simplified-gb2312改成 中文 - Chinese simplified,则左边的MySQL 字符集会变成UTF-8 Unicode...如果数据库编码没有问题,则 确保所有页面都是 utf-8 无BOM 另外在调用页面 mysql_query 前也 写入 mysql_query("set names utf8") 就可以保证无乱码

    6.1K10

    springmvc字符 中文乱码问题

    springmvc字符 中文乱码问题 1.字符过滤器 输入中文测试,发现乱码 ?...springmvc未设置字符过滤器,获取的信息,在前端页面显示的中文都是中文乱码。...解决方法:在web.xml中设置字符过滤器 encodingfilter-name> org.springframework.web.filter.CharacterEncodingFilterfilter-class...乱码问题,需要平时多注意,在尽可能能设置编码的地方,都设置为统一编码 UTF-8 这种过滤器对大部分中文乱码都有用了,但是还有一种情况为json中文乱码 2.json乱码问题 中文变成????...这里还要着重强调一下,要通过@ResponseBody 注解 将返回的json字符串放入响应体中,然后在前台js才能拿到json字符串进行解析,如果不加,响应体中就没有放入json字符串,前台自然是拿不到数据的

    1.7K20

    MySQL有哪些存储引擎(MySQL存储引擎大全)

    MyISAM在所有MySQL版本里被支持;不支持事务处理;它是MySQL的默认的存储引擎; MEMORY MEMORY存储引擎,别称HEAP存储引擎;提供“内存中”表,将数据存储在内存中。...MEMORY存储引擎不支持事务处理;MySQL的所有版本都支持InnoDB存储引擎;注释:MEMORY存储引擎正式地被确定为HEAP引擎。...InnoDB存储引擎;它支持事务处理; BDB BDB存储引擎,别名BERKELEYDB;BDB存储引擎提供事务安全表;mysql 5.1以下版本才支持此存储引擎; EXAMPLE EXAMPLE存储引擎是一个...你可以用这个引擎创建表,但没有数据被存储于其中或从其中检索。这个引擎的目的是服务,在MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。同样,它的主要兴趣是对开发者。...NDB NDB存储引擎,别名NDBCLUSTER;NDB Cluster是被MySQL Cluster用来实现分割到多台计算机上的表的存储引擎。它在MySQL-Max 5.1二进制分发版里提供。

    8.5K41

    【MySQL】MySQL的存储引擎

    不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。现在 许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎。...用户可以 根据不同的需求为数据表选择不同的存储引擎 可以使用 SHOW ENGINES 命令 可以查看Mysql的 所有执行引擎我们 可以到 默认的执行引擎是innoDB 支持事务,行级锁定和外键。...拥有较高的插入,查询速度,但不支持事 务 InnoDB:事务型速记的首选引擎,支持ACID事务,支持行级锁定,MySQL5.5成为默认数据库引 擎 Memory: 所有数据置于内存的存储引擎,拥有极高的插入...并且其内容会在MYSQL重新启动是会丢失。 Archive :非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。...关闭mysql服务 2. 找到mysql安装目录下的my.ini文件: 3.

    6.9K20

    Mysql存储过程和存储函数

    Mysql存储过程和存储函数 1.1. 存储过程的好处 1.2. 存储函数 1.2.1. 创建存储函数 1.2.1.1. 指定参数 1.2.2. 调用存储函数 1.2.3....参考文章 Mysql存储过程和存储函数 存储过程的好处 增强SQL语言的功能和灵活性:存储过程可以用控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。...存储函数 创建存储函数 在Mysql中有许多已经存在的存储函数,比如CONCAT(..),LENGTH(str)。但是我们也可以自己定义存储函数。...delimiter ; call selectUserById(1); : 查询id=1的用户信息 call selectUserById(null); :查询所有的用户信息,显示前面两个 注释 MySQL...MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT: IN参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值 OUT:该值可在存储过程内部被改变

    3.3K20

    MySQL存储过程

    2、简化操作 1-2、语法: CREATE PROCEDURE 存储过程名(参数列表) BEGIN 存储过程体(一组合法的SQL语句) END 注意: 1、参数列表包含三部分 参数模式 参数名...,begin end可以省略 存储过程体中的每条sql语句的结尾要求必须加分号。...存储过程的结尾可以使用 delimiter 重新设置 语法: delimiter 结束标记 案例: delimiter $ 二、存储过程创建和使用语法 2-1、语法 CALL 存储过程名(实参列表);...create procedure 存储过程名 SHOW CREATE PROCEDURE p1; #错误演示 DESC p1; 存储过程案例 #一、创建存储过程实现传入用户名和密码,插入到admin...,返回:女神 and 男神 格式的字符串 如 传入 :小昭 返回: 小昭 AND 张无忌 DROP PROCEDURE test_pro5 $ CREATE PROCEDURE test_pro5(IN

    12.9K10

    MySQL 存储过程

    存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升 一、存储过程概述 1.1、什么是存储过程 存储过程是数据库中的一个重要对象。...7.1、存储过程查看 格式: show procedure status [like '%字符串%']; 案例: mysql> show procedure status; mysql>show procedure...status like '%emp%'; 7.2、存储过程删除 格式: drop procedure 存储过程名; 案例: mysql> drop procedure emp_id; Query OK...张三 | +------------+ 1 行于数据集 (0.02 秒) 8.2、自定义函数操作 8.2.1、自定义函数查询 格式: show function status [like '%字符串...-+---------+---------------------+ 1 行于数据集 (0.02 秒) 9.2、触发器操作 9.2.1、触发器查看 格式: show triggers [like '%字符串

    41.6K20
    领券