温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

数据库插入乱码什么原因

发布时间:2026-09-21 09:15:58 来源:亿速云 阅读:99 作者:小樊 栏目:数据库

数据库插入出现乱码,通常是因为字符编码不一致导致的。下面按常见原因和排查思路给你梳理:


一、最常见原因

1. 数据库 / 表 / 字段编码不一致

  • 数据库编码:utf8mb4 / utf8 / latin1
  • 表编码
  • 字段编码

如果客户端是 UTF-8,但数据库是 latin1,中文就会乱码。

✅ 建议统一使用:

utf8mb4(推荐,支持 emoji)

查看编码:

SHOW VARIABLES LIKE 'character_set%';
SHOW CREATE TABLE your_table;

2. 数据库连接未指定编码

很多语言/框架连接数据库时,默认编码不是 UTF-8。

MySQL 示例

连接时必须指定:

SET NAMES utf8mb4;

或在连接字符串中:

  • JDBC:?useUnicode=true&characterEncoding=utf8
  • PHP:charset=utf8mb4
  • Python:charset=utf8mb4

3. 程序代码编码不是 UTF-8

  • 源文件不是 UTF-8(如 GBK)
  • 字符串在内存中已是乱码

✅ 检查:

  • 编辑器编码
  • 接口接收参数(如表单、JSON)

4. 前端提交数据编码问题

  • 页面未声明 UTF-8
<meta charset="UTF-8">
  • Ajax 未设置:
contentType: "application/json; charset=utf-8"

5. 已插入乱码,再读再写(二次污染)

一旦写入错误编码,再读取并写入会持续乱码。

✅ 解决:

  • 清空错误数据
  • 重新以正确编码插入

二、快速自查清单 ✅

  1. 数据库、表、字段是否都是 utf8mb4
  2. 连接是否指定 utf8mb4
  3. 程序文件是否为 UTF-8
  4. 前端页面是否 UTF-8
  5. 插入前打印数据是否正常

三、示例(正确配置)

MySQL

CREATE DATABASE test
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

Java

jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf8mb4

Python

conn = pymysql.connect(charset="utf8mb4")

如果你能告诉我:

  • 使用的数据库(MySQL / PostgreSQL 等)
  • 编程语言
  • 乱码示例(如 ????? / 中文)

我可以帮你精准定位是哪一步出的问题。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手