mysql 가져오기 파일에 중국어 왜곡 문자가 포함된 경우 수행할 작업

藏色散人
풀어 주다: 2020-10-30 16:53:18
원래의
5146명이 탐색했습니다.

mysql 가져온 파일의 중국어 왜곡된 문자에 대한 해결 방법: 먼저 데이터베이스를 만들고 인코딩을 지정한 다음 데이터베이스 파일을 가져오기 전에 인코딩 세트 이름을 utf8로 지정합니다.

mysql 가져오기 파일에 중국어 왜곡 문자가 포함된 경우 수행할 작업

추천: "mysql video tutorial"

어제의 문제를 계속해서 데이터베이스를 구성한 후 쿼리 테이블에서 한자가 깨져 있는 것을 발견했고 몇 가지를 살펴본 후에도 해결할 수 없었습니다. 인터넷상의 방법.
가져온 sql 파일에 문제가 있는 것 같으니 반대로 생각해서 명령어를 사용하여 데이터베이스를 생성하고 데이터를 추가한 다음 내보내서 어떻게 되는지 살펴보세요.
테이블에 데이터를 삽입할 때 오류가 보고되었습니다.
ERROR 1366(HY000): 잘못된 문자열 값: 행 1의 'bookname' 열에 대한 'xE6xB5x8BxE8xAFx95'ERROR 1366 (HY000): Incorrect string value: 'xE6xB5x8BxE8xAFx95' for column 'bookname' at row 1

mysql 가져오기 파일에 중국어 왜곡 문자가 포함된 경우 수행할 작업



mysql 가져오기 파일에 중국어 왜곡 문자가 포함된 경우 수행할 작업



这就奇怪了,查看表结构:
show create table book;



mysql 가져오기 파일에 중국어 왜곡 문자가 포함된 경우 수행할 작업

mysql 가져오기 파일에 중국어 왜곡 문자가 포함된 경우 수행할 작업



看到了一个不想看到的编码格式latin1,果断改掉,通过命令:alter table book default character set utf8;
改完看到一个神清气爽的结果,表的编码改过来了,但还存在一个“什么鬼?”,字段有个乱码latin1 :



mysql 가져오기 파일에 중국어 왜곡 문자가 포함된 경우 수행할 작업

mysql 가져오기 파일에 중국어 왜곡 문자가 포함된 경우 수행할 작업



果断再改,通过命令:alter table book change bookname bookname varchar(32) character set utf8;
改完后也不看了,直接插数据试试:

insert into book
(id,bookname,size,price)
values
(1,"测试",2,3)
;
로그인 후 복사

插入成功,查看数据是不是还中文乱码,发现并不乱码了:



mysql 가져오기 파일에 중국어 왜곡 문자가 포함된 경우 수행할 작업

那么开始进行下一步,导出sql文件,进入到mysql的bin目录下,开始通过命令导出,这个过程需要输入密码

E:\mysql-5.7.28-winx64\bin>mysqldump -u root -p test > test.sql
Enter password: *******
로그인 후 복사

导出的文件,表的编码格式utf8,与之前导入文件的比较并看不出什么问题。
那么,就是之前导入文件的过程,创建数据库的过程除了问题,查看之前导入的mydb.sql 的mydb数据库结构,果然不对:

mysql> use mydb;
Database changed
mysql> show variables like 'character_set_database';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| character_set_database | latin1 |
+------------------------+--------+
1 row in set, 1 warning (0.00 sec)
로그인 후 복사

遂修改之:alert database mydb character set utf8;
然后再查看表的编码,发现有鬼:

mysql> show create table sp_user_cart;
+--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table        | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
+--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| sp_user_cart | CREATE TABLE `sp_user_cart` (
  `cart_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
  `user_id` int(11) unsigned NOT NULL COMMENT '瀛﹀憳id',
  `cart_info` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '璐?墿杞﹁?鎯呬俊鎭?紝浜岀淮鏁扮粍搴忓垪鍖栦俊鎭',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `delete_time` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`cart_id`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8
로그인 후 복사

utf8mb4_unicode_ci 这个东西是怎么出来的...
然后改了编码,查询,还是不对,想起来之前创建数据库,可能是忘记设置编码,导入的东西本来就乱码了,也或者是my.ini配置不对,从头开始用正确流程试试吧。

先查看数据库的编码设置:show variables like 'character%';
发现很混乱:

mysql> show variables like 'character%';
+--------------------------+----------------------------------------+
| Variable_name            | Value                                  |
+--------------------------+----------------------------------------+
| character_set_client     | gbk                                    |
| character_set_connection | gbk                                    |
| character_set_database   | latin1                                 |
| character_set_filesystem | binary                                 |
| character_set_results    | gbk                                    |
| character_set_server     | latin1                                 |
| character_set_system     | utf8                                   |
| character_sets_dir       | D:\mysql-5.7.29-winx64\share\charsets\ |
+--------------------------+----------------------------------------+
로그인 후 복사

开始改,通过一系列的set
set character_set_client = utf8;

🎜🎜

🎜 🎜

mysql 가져오기 파일에 중국어 왜곡 문자가 포함된 경우 수행할 작업🎜

🎜🎜🎜🎜이상합니다. 테이블 구조를 확인하세요. 🎜show create table book;🎜🎜

🎜🎜

🎜🎜

mysql 가져오기 파일에 중국어 왜곡 문자가 포함된 경우 수행할 작업🎜

mysql 가져오기 파일에 중국어 왜곡 문자가 포함된 경우 수행할 작업🎜

🎜🎜🎜🎜인코딩을 봤어요 I 보고 싶지 않았습니다. latin1 형식을 결정적으로 변경하고 alter table book default char set utf8;🎜변경 후 테이블 인코딩을 확인할 수 있습니다. 변경되었지만 여전히 "대체 뭐야?"라는 메시지가 표시됩니다. ", 필드가 latin1을 왜곡했습니다: 🎜🎜

🎜🎜

🎜🎜

mysql 가져오기 파일에 중국어 왜곡 문자가 포함된 경우 수행할 작업🎜

mysql 가져오기 파일에 중국어 왜곡 문자가 포함된 경우 수행할 작업🎜

🎜🎜🎜🎜 결정하고 다시 변경하려면 다음 명령을 전달하세요. alter table bookchange bookname bookname varchar(32) char set utf8;🎜변경 후 읽지 않았습니다. 데이터를 직접 삽입해 보았습니다. 🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">+--------------------------+----------------------------------------+ | Variable_name            | Value                                  | +--------------------------+----------------------------------------+ | character_set_client     | utf8                                   | | character_set_connection | utf8                                   | | character_set_database   | utf8                                   | | character_set_filesystem | utf8                                   | | character_set_results    | utf8                                   | | character_set_server     | utf8                                   | | character_set_system     | utf8                                   | | character_sets_dir       | D:\mysql-5.7.29-winx64\share\charsets\ | +--------------------------+----------------------------------------+</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>🎜 삽입에 성공했습니다. 중국어에서 여전히 데이터가 깨졌는지 확인했는데 더 이상 깨지지 않았습니다. <p class="image-package">🎜🎜🎜🎜</p> <p class="image-container-fill " style="padding-bottom: 90.79%;"> <img src="https://img.php.cn/upload/image/602/276/640/1603850024398433.png" title="1603850024398433.png" alt="mysql 가져오기 파일에 중국어 왜곡 문자가 포함된 경우 수행할 작업">🎜🎜시작하기 다음 단계에서는 sql 파일을 내보내고 mysql의 bin 디렉터리에 들어가서 명령을 통해 내보내기를 시작합니다. 이 과정에서는 비밀번호를 입력해야 합니다🎜</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">mysql&gt; select * from sp_role; +---------+---------------+--------------------------------------------------------------------------------------------- ------------------------------------------------------+----------------------------------------------------------------- ------------------------+--------------------+ | role_id | role_name     | ps_ids                                                       | ps_ca                         | role_desc          | +---------+---------------+--------------------------------------------------------------------------------------------- ------------------------------------------------------+----------------------------------------------------------------- ------------------------+--------------------+ |      30 | 主管          | 101,0,104,116,115,142,143,144,121,122,123,149,102,107,109,103,111,129,130,134,135,138,139,14 0,141,112,147,125,110,131,132,133,136,137,145,146,148 | Goods-index,Goods-tianjia,Category-index,Order-showlist,Brand-in dex                     | 技术负责人         | |      31 | 测试角色      | 101,0,104,105,116,117,115,142,143,144,121,122,123,149,103,111,129,134,138,112,147                                                       | Goods-showlist,Goods-tianjia,Category-showlist,Order-showlist,Or der-dayin,Order-tianjia | 测试角色描述       | |      34 | 测试角色2     | 0,105,116,142,143,122                                                       | NULL                         | 测试描述12         | |      39 | 大发送到      | 101,0,104,105,116                                                       | NULL                         | 阿斯蒂芬           | |      40 | test          | 102,0,107,109,154,155,145,146,148                                                       | NULL</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>🎜내보낸 파일, 테이블 인코딩입니다. 형식은 utf8이며 이전에 가져온 파일과 비교하면 문제가 없습니다. 🎜그럼 이전에 파일을 가져오는 과정인데 데이터베이스 생성 문제와 더불어 이전에 가져온 mydb.sql의 데이터베이스 구조를 확인해 보니 정말 틀렸습니다. 🎜rrreee🎜그래서 수정했습니다: <code>alert 데이터베이스. mydb Character set utf8;🎜그런 다음 테이블의 인코딩을 확인했는데 뭔가 이상한 것을 발견했습니다: 🎜rrreee🎜utf8mb4_unicode_ci 이게 어떻게 나온 걸까요...🎜그런 다음 인코딩을 변경하고 쿼리했지만 여전히 잘못되었습니다. . 이전에 데이터베이스를 생성한 것이 기억나거나, 인코딩 설정을 잊어버렸거나, 가져온 내용이 깨졌거나, my.ini 구성이 잘못되었을 수 있습니다. 처음부터 올바른 프로세스를 사용해 보세요. 🎜🎜먼저 데이터베이스의 인코딩 설정을 확인하세요: <code>'character%'와 같은 변수 표시;🎜 매우 혼란스럽다는 것을 발견했습니다: 🎜rrreee🎜일련의 set🎜set Character_set_client를 통해 변경되기 시작했습니다. = utf8;🎜결과 얻기🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">+--------------------------+----------------------------------------+ | Variable_name            | Value                                  | +--------------------------+----------------------------------------+ | character_set_client     | utf8                                   | | character_set_connection | utf8                                   | | character_set_database   | utf8                                   | | character_set_filesystem | utf8                                   | | character_set_results    | utf8                                   | | character_set_server     | utf8                                   | | character_set_system     | utf8                                   | | character_sets_dir       | D:\mysql-5.7.29-winx64\share\charsets\ | +--------------------------+----------------------------------------+</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div> <p>创建数据库并制定编码:<code>CREATE DATABASE test2 CHARACTER SET utf8 COLLATE utf8_general_ci;
使用:use test2
在导入数据库文件之前,制定编码set names utf8;
导入:source F:xxxx\xxxx\mydb.sql;
不算漫长的等待之后,查询,不乱码了

mysql> select * from sp_role;
+---------+---------------+---------------------------------------------------------------------------------------------
------------------------------------------------------+-----------------------------------------------------------------
------------------------+--------------------+
| role_id | role_name     | ps_ids
                                                      | ps_ca
                        | role_desc          |
+---------+---------------+---------------------------------------------------------------------------------------------
------------------------------------------------------+-----------------------------------------------------------------
------------------------+--------------------+
|      30 | 主管          | 101,0,104,116,115,142,143,144,121,122,123,149,102,107,109,103,111,129,130,134,135,138,139,14
0,141,112,147,125,110,131,132,133,136,137,145,146,148 | Goods-index,Goods-tianjia,Category-index,Order-showlist,Brand-in
dex                     | 技术负责人         |
|      31 | 测试角色      | 101,0,104,105,116,117,115,142,143,144,121,122,123,149,103,111,129,134,138,112,147
                                                      | Goods-showlist,Goods-tianjia,Category-showlist,Order-showlist,Or
der-dayin,Order-tianjia | 测试角色描述       |
|      34 | 测试角色2     | 0,105,116,142,143,122
                                                      | NULL
                        | 测试描述12         |
|      39 | 大发送到      | 101,0,104,105,116
                                                      | NULL
                        | 阿斯蒂芬           |
|      40 | test          | 102,0,107,109,154,155,145,146,148
                                                      | NULL
로그인 후 복사
로그인 후 복사

实战项目可以继续进行,遂生法喜。

위 내용은 mysql 가져오기 파일에 중국어 왜곡 문자가 포함된 경우 수행할 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!