iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql字符乱码
  • 919
分享到

mysql字符乱码

2024-04-02 19:04:59 919人浏览 八月长安
摘要

1)Mysql插入中文数据乱码问题:模拟乱码现象: mysql> create database kitty; Query OK, 1 ro

1)Mysql插入中文数据乱码问题:

模拟乱码现象:
mysql> create database kitty;
Query OK, 1 row affected (0.00 sec)
mysql> show create database kitty\G;
*************************** 1. row ***************************
       Database: kitty
Create Database: CREATE DATABASE `kitty` 
1 row in set (0.00 sec)
ERROR: 
No query specified
mysql> alter database kitty character set latin1;
Query OK, 1 row affected (0.01 sec)
mysql> flush privileges;
mysql> use kitty;
Database changed
创建teacher表(字符集为latin1):
CREATE TABLE `teacher` (
  `id` int(4) NOT NULL,
  `name` char(20) NOT NULL,
  `age` tinyint(2) NOT NULL DEFAULT '0',
  `dept` varchar(16) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
插入两条数据,其中一行带有中文字符
mysql> insert into teacher values(1,'wanlong','31','Server'),(2,'laomao','31','售后部');
Query OK, 2 rows affected, 1 warning (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 1
mysql> flush privileges;
Query OK, 0 rows affected (0.00 se
查看发现有乱码出现:
mysql> select * from teacher;
+----+---------+-----+--------+
| id | name    | age | dept   |
+----+---------+-----+--------+
|  1 | wanlong |  31 | Server |
|  2 | laomao  |  31 | ???    |
+----+---------+-----+--------+
2 rows in set (0.00 sec)

2) 如何解决乱码了

不乱码的思想:建议中英文混合的环境,选择utf-8

客户端:

set names utf8(临时生效)

修改my.cnf(永久生效)

[client]

default-character-set=utf8


服务端-库-表-程序

服务端:
[mysqld]
default-character-set=utf8(适合5.1及以前的版本)
character-set-server=utf8(适合5.5)
库:
查看数据库的编码:
mysql> show variables like'%char%';
+--------------------------+-------------------------------------------+
| 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       | /application/mysql-5.5.32/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.00 sec)
表:
查看表的编码:
mysql> show create table teacher\G;
*************************** 1. row ***************************
       Table: teacher
Create Table: CREATE TABLE `teacher` (
  `id` int(4) NOT NULL,
  `name` char(20) CHARACTER SET latin1 NOT NULL,
  `age` tinyint(2) NOT NULL DEFAULT '0',
  `dept` varchar(16) CHARACTER SET latin1 DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
ERROR: 
No query specified
mysql> select * from teacher;
+----+---------+-----+--------+
| id | name    | age | dept   |
+----+---------+-----+--------+
|  1 | wanlong |  31 | Server |
|  2 | laomao  |  31 | ???    |
|  3 | kobe    |  35 | ???    |
+----+---------+-----+--------+
3 rows in set (0.00 sec)
mysql> show create table teacher\G;
*************************** 1. row ***************************
       Table: teacher
Create Table: CREATE TABLE `teacher` (
  `id` int(4) NOT NULL,
  `name` char(20) CHARACTER SET latin1 NOT NULL,
  `age` tinyint(2) NOT NULL DEFAULT '0',
  `dept` varchar(16) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
ERROR: 
No query specified
修改字段的字符集:
mysql> alter table `teacher` change `dept` `dept` varchar(16) CHARACTER SET utf8 NOT NULL;
mysql> alter table `teacher` change `name` `name` char(20) CHARACTER SET utf8 NOT NULL;
mysql> show full columns from teacher;
+-------+-------------+-----------------+------+-----+---------+-------+---------------------------------+--
| Field | Type        | Collation       | Null | Key | Default | Extra | Privileges                      | C
+-------+-------------+-----------------+------+-----+---------+-------+---------------------------------+--
| id    | int(4)      | NULL            | NO   |     | NULL    |       | select,insert,update,references |  
| name  | char(20)    | utf8_general_ci | NO   |     | NULL    |       | select,insert,update,references |  
| age   | tinyint(2)  | NULL            | NO   |     | 0       |       | select,insert,update,references |  
| dept  | varchar(16) | utf8_general_ci | NO   |     | NULL    |       | select,insert,update,references |  
+-------+-------------+-----------------+------+-----+---------+-------+---------------------------------+--
4 rows in set (0.00 sec)
mysql> select * from teacher;
+----+---------+-----+--------+
| id | name    | age | dept   |
+----+---------+-----+--------+
|  1 | wanlong |  31 | Server |
|  2 | laomao  |  31 | ???    |
|  3 | kobe    |  35 | ???    |
+----+---------+-----+--------+
3 rows in set (0.00 sec)
测试再次插入带有中文字符的字段:
mysql> insert into teacher values(4,'万龙',30,'校园网'),(5,'知行',29,'华东院');
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0
mysql> select * from teacher;
+----+---------+-----+-----------+
| id | name    | age | dept      |
+----+---------+-----+-----------+
|  1 | wanlong |  31 | Server    |
|  2 | laomao  |  31 | ???       |
|  3 | kobe    |  35 | ???       |
|  4 | 万龙    |  30 | 校园网    |
|  5 | 知行    |  29 | 华东院    |
+----+---------+-----+-----------+
5 rows in set (0.00 sec)


3)老数据仍旧是乱码!

说明:

a)对于已有数据库想修改字符集不能直接通过“alter database kitty character set *”或者“alter table tablename character set *”,这两个命令都没有更新已有记录的字符集,而只是对新创建的表或记录生效。


b)已经有记录的字符的调整,必须先将数据导出,经过修改字符集后重新导入后才可完成

修改数据库默认编码:

“alter database kitty character set *”


4)参考解决方法:

如何更改生产MySQL数据库库表的字符集

1、导出表结构
mysqldump -uroot -predhat12345 -S /data/3306/mysql.sock --default-character-set=latin1 -d kitty>kittytable.sql
说明:-d只导表结构
2、编辑kittytable.sql,将lantin1改成utf8
可以用sed批量修改
3、确保数据库不再更新,导出所有数据
mysqldump -uroot -predhat12345 -S /data/3306/mysql.sock --quick --no-create-info --extended-insert --default-character-set=latin1 kitty>kittydata.sql
4、打开kittydata.sql,将set names latin1修改成set names utf8
5、删除原有的库表及数据(需要慎重)
6、建库
create database kitty default charset utf8;
7、创建表,执行kittytable.sql
mysql -uroot -predhat12345 -S /data/3306/mysql.sock kitty<kittytable.sql
8、导入数据
mysql -uroot -predhat12345 -S /data/3306/mysql.sock kitty<kittydata.sql


5)执行SQL文件插入中文数据不乱码实战:

a、将需要更新的sql语句放到文本文件中

mysql> system cat test.sql
set names utf8;
insert into teacher values (6,'张飞',45,'商务部');

b、通过source来调用sql文件

mysql> source test.sql
Query OK, 0 rows affected (0.00 sec)
Query OK, 1 row affected (0.01 sec)
mysql> select * from teacher;
+----+---------+-----+-----------+
| id | name    | age | dept      |
+----+---------+-----+-----------+
|  1 | wanlong |  31 | Server    |
|  2 | laomao  |  31 | ???       |
|  3 | kobe    |  35 | ???       |
|  4 | 万龙    |  30 | 校园网    |
|  5 | 知行    |  29 | 华东院    |
|  6 | 张飞    |  45 | 商务部    |
+----+---------+-----+-----------+
6 rows in set (0.00 sec)






您可能感兴趣的文档:

--结束END--

本文标题: mysql字符乱码

本文链接: https://www.lsjlt.com/news/45443.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL字符集乱码怎么办
    小编给大家分享一下MySQL字符集乱码怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言字符集是一套符号和编码的规则,不论...
    99+
    2024-04-02
  • golang 字符乱码
    Golang 是一种非常强大的编程语言,可以用于编写高效的网络应用、服务器和分布式系统。然而,由于历史遗留问题和不同的编码方式,经常会出现字符乱码问题。在本文中,我将讨论 Golang 中的字符乱码问题,并提供一些解决方案。什么是字符乱码?...
    99+
    2023-05-16
  • mysql中字符集乱码如何解决
    本篇文章给大家分享的是有关mysql中字符集乱码如何解决,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。解决mysql字符集乱码的问题 ...
    99+
    2024-04-02
  • mysql字符转化出现乱码的原因
    这篇文章主要介绍“mysql字符转化出现乱码的原因”,在日常操作中,相信很多人在mysql字符转化出现乱码的原因问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql字符转...
    99+
    2024-04-02
  • MySQL字符集怎么才能不发生乱码
    本篇内容主要讲解“MySQL字符集怎么才能不发生乱码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL字符集怎么才能不发生乱码”吧!客户端字符集的设置,依...
    99+
    2024-04-02
  • mysql 乱码字符 latin1 characters 转换为 UTF8详情
    背景:目前正在进行业务重构,需要对使用MySQL的业务库表进行重新设计,在迁移时,遇到了中文字符乱码问题(源库表的默认编码是LATIN1,新库表的默认编码为UTF8),故重新学习了下...
    99+
    2024-04-02
  • linux的redhat版上mysql字符乱码怎么办
    这篇文章给大家分享的是有关linux的redhat版上mysql字符乱码怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。linux上安装了mysql服务,默认的字符编码不是utf8,所以会出现中文乱码。解决方...
    99+
    2023-06-09
  • Mysql字符集设置乱码的原因有哪些
    这篇文章主要介绍了Mysql字符集设置乱码的原因有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。基本概念• 字符(Character)是...
    99+
    2024-04-02
  • golang字符乱码怎么解决
    本篇内容介绍了“golang字符乱码怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是字符乱码字符乱码是指在文本中出现了无法正确解...
    99+
    2023-07-06
  • java字符串乱码如何解决
    Java字符串乱码的解决方法有以下几种:1. 确保源文件的编码与Java编译器的编码一致。可以在编写Java源文件时,使用指定编码格...
    99+
    2023-08-31
    java
  • 如何解决php字符串乱码
    本篇内容介绍了“如何解决php字符串乱码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php字符串乱码的解决办法:1、通过iconv把gb2...
    99+
    2023-06-25
  • php向mysql数据库传入字符串乱码怎么办
    php向mysql数据库传入字符串乱码的解决办法:1、通过“show variables like 'character%';”查看数据库编码方式;2、通过“set character_set_server = 'u...
    99+
    2023-05-14
    php 数据库 乱码
  • php字符串部分乱码怎么办
    php字符串部分乱码的解决办法:1、使用“mb_substr(strip_tags($str),0,-1,'UTF-8');”截取字符串;2、使用“iconv("UTF-8",&quo...
    99+
    2023-05-14
    php 乱码 字符串
  • mysql汉字乱码如何解决
    今天小编给大家分享一下mysql汉字乱码如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2023-04-21
    mysql
  • php向mysql数据库传入字符串乱码如何解决
    今天小编给大家分享一下php向mysql数据库传入字符串乱码如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。php向m...
    99+
    2023-07-05
  • PHP字符集编码出现乱码怎么解决
    这篇文章主要讲解了“PHP字符集编码出现乱码怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP字符集编码出现乱码怎么解决”吧!要么页面原始汉字和从数据库里取出的汉字全是乱码;要么原...
    99+
    2023-06-17
  • oracle 修改字符集乱码怎么解决
    oracle 修改字符集乱码解决方法:1、找到TNSNAMES.ORA文件在里面找到要连接的数据库的别名,设置环境变量NLS_LANG,打开SQL*Plus,使用以上配置连接到数据库;2、创建一个存放中文字符的表,在存放中文字符的字段中插入...
    99+
    2023-07-10
  • php字符串部分乱码如何解决
    本篇内容主要讲解“php字符串部分乱码如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php字符串部分乱码如何解决”吧!php字符串部分乱码的解决办法:1、使用“mb_substr...
    99+
    2023-07-05
  • discuz3.4特殊字符乱码的解决方法
    这篇文章将为大家详细讲解有关discuz3.4特殊字符乱码的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Discuz!3.4升级后,贴子内容使用Unicode编码会出现直接显示源码问题打开:so...
    99+
    2023-06-14
  • java字符串中文乱码怎么解决
    在Java中,解决字符串中文乱码问题可以采取以下几种方法:1. 使用正确的字符编码:在Java中,字符串编码默认使用的是UTF-8编...
    99+
    2023-08-11
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作