`
worldly
  • 浏览: 43552 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql安装后中文插入不成功或者插入后乱码的问题

阅读更多
1.在安装完MySQL后,首先应该修改字符编码统一,保证中文不会乱码:

查看字符集:

mysql> show variables like 'character%';
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | utf8                                                    |
| character_set_connection | utf8                                                    |
| character_set_database   | utf8                                                    |
| character_set_filesystem | binary                                                  |
| character_set_results    | utf8                                                    |
| character_set_server     | utf8                                                    |
| character_set_system     | utf8                                                    |
| character_sets_dir       | /usr/local/mysql-5.7.12-osx10.11-x86_64/share/charsets/ |
+--------------------------+---------------------------------------------------------+
8 rows in set (0.01 sec)
如上,除了character_set_filesystem和character_sets_dir 外,需要将其他修改统一为utf8,命令如下:
mysql> set character_set_client=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_connection=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_database=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_results=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_server=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_system=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_connection=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_database=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_server=utf8;
Query OK, 0 rows affected (0.01 sec)

设置database和table字符集编码为utf8:
mysql>use Young_db
mysql>alter database Young_db character set utf8;
mysql>alter table user character set utf8;


创建时候指定编码集:
mysql>create database Young_db character set utf8;



2.当忘记修改就创建了database 或者 table 后修改命令如下:
查看数据库编码:


mysql> show create database Young_db;
+----------+---------------------------------------------------------------------+
| Database | Create Database                                                     |
+----------+---------------------------------------------------------------------+
| Young_db | CREATE DATABASE `Young_db` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+---------------------------------------------------------------------+
1 row in set (0.00 sec)


修改编码为utf-8:
mysql> alter database Young_db character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql> show create database Young_db;
+----------+-------------------------------------------------------------------+
| Database | Create Database                                                   |
+----------+-------------------------------------------------------------------+
| Young_db | CREATE DATABASE `Young_db` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-------------------------------------------------------------------+
1 row in set (0.00 sec)


查看数据表的编码:
mysql> use Young_db;
mysql> show create table users;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                     |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| users | CREATE TABLE `users` (
  `userId` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(45) DEFAULT NULL,
  `passwod` varchar(45) NOT NULL,
  PRIMARY KEY (`userId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)


修改表的编码:
mysql> alter table users character set utf8;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table users;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                                             |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| users | CREATE TABLE `users` (
  `userId` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(45) CHARACTER SET latin1 DEFAULT NULL,
  `passwod` varchar(45) CHARACTER SET latin1 NOT NULL,
  PRIMARY KEY (`userId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

总结安装了MySQL后,建议首先统一字符集编码,可按照上文1中所述操作(不修改默认是Latin1),这样创建table时自动使用修改后的编码,不会出现中文乱码的问题;如果创建表时没有统一字符集编码,每次创建database和table时可以指定字符集编码,否则会出现中文乱码;如果上述两种均未遵循,insert操作会出现ERROR 1366 (HY000): Incorrect string value: '\xE5\xBC\x80\xE5\xA7\x8B...' for column 'name' at row 1的错误,需要按照2中描述修改database和table的字符集编码,后可以解决插入中文不成功及插入后乱码的问题。


分享到:
评论

相关推荐

    Mysql插入中文乱码问题解决

    ### MySQL 插入中文乱码问题详解与解决方案 #### 一、问题背景及原因分析 在使用 MySQL 数据库处理中文数据时,经常会遇到一个让人头疼的问题——中文乱码。中文乱码不仅影响用户体验,还可能导致数据丢失或者错误...

    java插入mysql中文乱码解决

    本文将详细介绍如何解决Java插入MySQL时遇到的中文乱码问题。 #### 二、乱码原因分析 中文乱码主要由以下几个方面的原因引起: 1. **字符集不一致**:如果Java程序、JDBC驱动、MySQL服务器以及数据库表的字符集...

    mysql中文乱码问题

    在 MySQL 中,中文乱码问题通常是由于 character_set_server 变量的设置不正确所导致的。默认情况下,character_set_server 变量的值是 latin1,這导致了中文乱码问题的出现。另外,数据库的编码方式也可能是导致...

    PHP向mysql插入中文乱码问题,php文件内容写入数据库!

    以下将详细分析并解决PHP向MySQL插入中文乱码问题,以及如何正确处理PHP文件内容写入数据库。 首先,我们需要确保数据库的编码设置正确。MySQL数据库通常使用UTF-8编码,因此创建数据库和表时应指定`CHARACTER SET ...

    解决 docker mysql 中文乱码问题

    使用 docker 启动 mysql 容器可能会出现中文乱码的情况,这里记录如何制作支持中文的 mysql 镜像 docker版本:18.06 mysql 版本:5.7 1. 创建 my.cnf 文件 [client] default-character-set=utf8 [mysql] default-...

    C# mysql 插入数据,中文乱码的解决方法

    然而,这种方法可能会对整个数据库连接的后续操作产生影响,因此在插入完中文数据后,别忘了恢复到原来的字符集,以避免其他非中文数据的乱码问题。 **方法二:在连接字符串中指定字符集** 更常见且推荐的做法是在...

    Mysql的longblob字段插入数据问题解决

    在使用mysql的过程中,有个问题就是mysql的优化,mysql中longblob字段在5.5版本中默认的为1M。 想改变这个问题,需要注意几点: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (2054817 > ...

    mysql插入记录防止乱码

    在使用MySQL数据库的过程中,特别是在处理中文等非ASCII字符时,可能会遇到数据插入后显示为乱码的情况。这种情况不仅影响数据的正确读取,还可能导致用户界面呈现异常。本文将详细介绍如何在MySQL中插入记录时避免...

    mac MySQL中文乱码解决办法

    在macOS系统中,使用MySQL数据库时,可能会遇到中文乱码的问题,这通常是由于字符集设置不正确导致的。本文将详细介绍如何解决macOS系统下MySQL中文乱码的问题,通过修改配置文件my.cnf来调整MySQL的字符集,确保...

    MySQL5.6中文乱码问题

    在MySQL 5.6中遇到中文乱码问题,通常是由于字符集配置不正确导致的。字符集决定了数据库如何存储和显示非英文字符,尤其是对于中文这样的多字节字符集而言,正确的配置至关重要。以下是解决MySQL 5.6中文乱码问题的...

    MYSQL插入中文解决方法

    MYSQL插入中文解决方法是MYSQL中的一种常见问题,解决该问题需要对MYSQL的字符集进行修改。在MYSQL中,默认的字符集是Latin1,但这种字符集不支持中文字符,导致插入中文时出现乱码问题。为了解决这个问题,我们需要...

    hibernate+mysql乱码问题

    如果数据库、表或列的字符集不匹配,或者与应用程序的编码设置不一致,就可能导致乱码。例如,`set names gbk` 是MySQL中设置客户端、连接和结果集编码为GBK的命令,而GBK是中文的一个常见编码方式。如果你的数据源...

    nodejs和C语言插入mysql数据库乱码问题的解决方法.docx

    这个问题主要体现在插入中文字符时出现乱码,通常是因为字符集编码不一致导致的。以下是一些解决此问题的关键点: 1. **字符集理解**: - **UTF-8**:是一种广泛使用的Unicode字符集,支持全球大多数语言的字符,...

    MySql数据库导入乱码

    在使用 PHPmyadmin 导出 MySql 数据库时,经常会遇到中文乱码的问题,这是因为数据库的字符集编码问题。中文网站使用的字符集编码一般是 gb2312、gbk、utf8 等三种,而 PHPmyadmin 的默认字符集是 latin1_swedish_ci...

    mysql乱码问题解决

    MySQL作为广泛使用的开源关系型数据库管理系统之一,在实际应用中也难免会遇到字符集不匹配导致的数据乱码问题。本文将详细探讨如何识别与解决MySQL中的乱码问题,并提供具体的操作步骤及注意事项。 #### 一、理解...

    Mysql中文乱码问题解决方案

    MySQL数据库在处理中文字符时,有时会出现乱码问题,这主要与字符集设置不正确有关。本文将深入探讨MySQL中文乱码问题的原因、解决方法,以及如何在创建数据库和表时避免这类问题。 首先,我们要了解字符集的概念。...

    JSP MySQL插入数据时出现中文乱码问题的解决方法.docx

    JSP MySQL 插入数据时出现中文乱码问题的解决方法 在 JSP 应用程序中,使用 MySQL 数据库时,插入中文数据可能会出现乱码问题。这种问题的产生是因为客户端和服务器端的字符集编码不一致所导致的。解决这个问题需要...

    JSP MySQL插入数据时出现中文乱码问题的解决方法

    总结一下,解决JSP MySQL插入数据时中文乱码的问题,可以采取以下步骤: 1. 使用SQL命令临时更改字符集: ```sql SET NAMES gbk; ``` 这个命令会更改当前会话的字符集为GBK,适用于临时会话。 2. 修改MySQL...

    mysql_不能插入中文的解决办法

    在开发 Web 程序或学习 MySQL 的过程中,我们经常会遇到中文乱码或中文插入失败的情况。这是因为 MySQL 的默认字符集不是支持中文的字符集所致。为了解决这个问题,我们需要修改 MySQL 的字符集,使其支持中文字符。...

    mysql 插入中文读取中文无乱码 2

    在MySQL数据库中处理中文字符时,可能会遇到插入和读取中文数据出现乱码的问题。这个问题通常是由于字符编码不一致导致的。以下是一些关键知识点,帮助你理解和解决MySQL中文乱码问题。 1. **字符集与编码** - **...

Global site tag (gtag.js) - Google Analytics