찾다
데이터 베이스MySQL 튜토리얼分享mysql中文乱码的解决办法

修改mysql配置解决乱码

首先:

用show variables like “%colla%”;show varables like “%char%”;这两条命令查看数据库与服务端的字符集设置

如果查看出来都是gbk2312,或 gbk,那么就只能支持简体中文,繁体和一些特殊符号是不能插入的,我们只有修改字符集为UTF-8,

修改方法如下:

用记事本或UitraEdit打开mysql数据库安装目录下的my.ini文件打开, 然后Ctrl+F搜索default-character-set,将后面的字符集修改为UTF8,注意要修改两个地方,一个事客户端的,一个是服务端的。

然后保存,重启mysql服务、、进去继续用show variables like “%colla%”;show varables like “%char%”;着两条语句查询一下字符集

数据表和连接部分的编码设置

设置数据库和数据表编码

要解决乱码问题,首先必须弄清楚数据库和数据表用什么编码。如果没有指明,将是默认的latin1。
用得最多的应该是这3种字符集 gb2312,gbk,utf8。
如何去指定数据库和数据表的字符集呢?下面也gbk为例:
【在MySQL Command Line Client创建数据库 】

<code class="language-sql">mysql> CREATE TABLE `mysqlcode` (
  -> `id` TINYINT( 255 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  -> `content` VARCHAR( 255 ) NOT NULL
  -> ) TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci;
  Query OK, 0 rows affected, 1 warning (0.03 sec)</code>

其中后面的 TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci;就是指定数据库的字符集,COLLATE (校勘),让mysql同时支持多种编码的数据库。

当然也可以通过如下指令修改数据库数据表的字符集:

<code class="language-sql">alter database mysqlcode default character set 'gbk'.</code>

前面已经设置了服务器、数据库和数据表的编码,那么数据库中的编码便都是gbk,中文可以存储进去。
但是如果你要通过执行insert或select等操作时,仍然会出现中文乱码问题,这是因为还没设置“连接(connection)”部分的编码,而insert、select等数据库操作都包含与数据库的连接动作。如果不信,你现在可以执行下面的sql文试一试:

<code class="language-sql">mysql> insert into mysqlcode values(null,'代码分享');</code>

设置连接编码

设置了服务器、数据库和数据表部分的编码,必须设置连接编码。连接编码设置如下:

<code class="language-sql">mysql> SET character_set_client='gbk';
mysql> SET character_set_connection='gbk'
mysql> SET character_set_results='gbk'</code>

设置好连接编码,下面便可以成功插入中文了:

<code class="language-sql">mysql> insert into mysqlcode values(null,'java爱好者');
Query OK, 0 rows affected (0.02 sec)</code>

其实,上面设置连接编码的三条命令可以简化为一条:

<code class="language-sql">mysql> set names 'gbk';</code>

设置好了连接编码后,在select查询时,也能正确显示中文:

<code class="language-sql">mysql> select * from mysqlcode;
+----+-----------+
| id | content |
+----+-----------+
| 1   | java爱好着 |
+----+-----------+
1 row in set (0.00 sec)</code>

 

查询mysql中文记录乱码问题

我们这里以gb2312编码乱码为实例来介绍

如果你想使用gb2312编码,那么建议你使用latin1作为数据表的默认字符集,这样就能直接用中文在命令行工具中插入数据,并且可以直接显示出来.而不要使用gb2312或者gbk等字符集,如果担心查询排序等问题,可以使用binary属性约束,例如:

<code class="language-sql">create table my_table ( name varchar(20) binary not null default'')type=myisam default charset latin1;</code>

附:旧数据升级办法
以原来的字符集为latin1为例,升级成为utf8的字符集。

原来的表:old_table (default charset=latin1),新表:new_table(defaultcharset=utf8)。

第一步:导出旧数据

<code class="language-sql">mysqldump --default-character-set=latin1 -hlocalhost -uroot -Bmy_db --tables old_table > old.sql</code>

第二步:转换编码

<code class="language-sql">iconv -t utf-8 -f gb2312 -c old.sql > new.sql</code>

在这里,假定原来的数据默认是gb2312编码。

第三步:导入

修改old.sql,增加一条sql语句: "SET NAMES utf8;",保存。

<code class="language-sql">mysql -hlocalhost -uroot my_db </code>

大功告成!!

mysql导入数据乱码解决 

出现乱码语句:mysql -hlocalhost -uroot -proot test

正确的语句:mysql -hlocalhost -uroot -proot test

解决mysql导入导出数据乱码问题

首先要做的是要确定你导出数据的编码格式,使用mysqldump的时候需要加上--default-character-set=utf8,例如下面的代码:

<code class="language-sql">mysqldump   -uroot  -p  --default-character-set=utf8   dbname tablename  >  bak.sql</code>

那么导入数据的时候也要使用--default-character-set=utf8:

<code>mysql -uroot -p --default-character-set=utf8 dbname </code>

这样统一编码就解决了mysql数据迁移中的乱码问题了

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
php 导入csv乱码问题怎么办php 导入csv乱码问题怎么办Nov 21, 2022 am 09:32 AM

php导入csv乱码问题的解决办法:1、构造一个解析函数“function tb_str_getcsv($string, $delimiter=',', $enclosure='"') {...}”;2、读取文件到变量;3、通过“substr($s,2)”去掉BOM头即可。

cmd php乱码怎么办cmd php乱码怎么办Nov 22, 2022 am 10:29 AM

cmd php乱码的解决办法:1、在windows平台的cmd或shellpower中,执行php脚本并检查是否乱码;2、通过在php脚本里执行“exec("CHCP 65001");”命令去修改当前页码字符集即可。

php+fread()乱码怎么办php+fread()乱码怎么办Jan 18, 2023 am 10:21 AM

php+fread()乱码是因为输出页面的编码和被读文件的编码不一致,其解决办法:1、打开相应的PHP文件;2、通过fread函数读取文件;3、通过“iconv('gbk', 'utf-8', $data)”方法将读取的内容转码即可。

linux命令行显示乱码怎么办linux命令行显示乱码怎么办Mar 03, 2023 am 09:30 AM

linux命令行显示乱码的解决办法:1、通过“echo $LANG”命令查看当前支持的语言;2、使用“LANG=en_US”命令修改语言为英语语系即可解决乱码问题。

如何解决php写入数据库中文乱码问题如何解决php写入数据库中文乱码问题Sep 25, 2021 am 10:29 AM

php写入数据库中文乱码的解决办法:1、创建数据库并设置“utf8_general_ci”编码;2、用PHP读写数据库,然后设置“mysql_query("set names 'utf8'");”即可。

wordpress后台乱码怎么办wordpress后台乱码怎么办Feb 03, 2023 pm 01:48 PM

wordpress后台乱码的解决办法:1、在wordpress的“wp-admin”文件夹下找到“admin.header.php”文件;2、将“charset”属性值设置为“UTF-8”格式即可恢复正常。

mysql注释乱码问题怎么解决mysql注释乱码问题怎么解决Feb 13, 2023 am 09:44 AM

mysql注释乱码问题的解决办法:1、通过“show variables like '%colla%';show variables like '%char%';”命令查看数据库与服务端的字符集设置;2、通过“set character_set_client=utf8;”设置结果集为utf8即可。

php dompdf中文乱码怎么办php dompdf中文乱码怎么办Jan 18, 2023 am 10:34 AM

php dompdf中文乱码的解决办法:1、打开前端文件;2、通过设置“@font-face {font-family:ttt;src: url(/static/font/simkai.ttf)}”引用中文字体;3、删除“dompdf_font_family_cache.php”即可。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기