mysql 가져온 파일의 중국어 왜곡된 문자에 대한 해결 방법: 먼저 데이터베이스를 만들고 인코딩을 지정한 다음 데이터베이스 파일을 가져오기 전에 인코딩 세트 이름을 utf8로 지정합니다.
추천: "mysql video tutorial"
어제의 문제를 계속해서 데이터베이스를 구성한 후 쿼리 테이블에서 한자가 깨져 있는 것을 발견했고 몇 가지를 살펴본 후에도 해결할 수 없었습니다. 인터넷상의 방법.
가져온 sql 파일에 문제가 있는 것 같으니 반대로 생각해서 명령어를 사용하여 데이터베이스를 생성하고 데이터를 추가한 다음 내보내서 어떻게 되는지 살펴보세요.
테이블에 데이터를 삽입할 때 오류가 보고되었습니다. ERROR 1366(HY000): 잘못된 문자열 값: 행 1의 'bookname' 열에 대한 'xE6xB5x8BxE8xAFx95'
ERROR 1366 (HY000): Incorrect string value: 'xE6xB5x8BxE8xAFx95' for column 'bookname' at row 1
这就奇怪了,查看表结构:show create table book;
看到了一个不想看到的编码格式latin1,果断改掉,通过命令:alter table book default character set utf8;
改完看到一个神清气爽的结果,表的编码改过来了,但还存在一个“什么鬼?”,字段有个乱码latin1 :
果断再改,通过命令:alter table book change bookname bookname varchar(32) character set utf8;
改完后也不看了,直接插数据试试:
insert into book (id,bookname,size,price) values (1,"测试",2,3) ;
插入成功,查看数据是不是还中文乱码,发现并不乱码了:
那么开始进行下一步,导出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\ | +--------------------------+----------------------------------------+
开始改,通过一系列的setset character_set_client = utf8;
🎜 🎜
🎜
🎜🎜
🎜🎜
🎜
🎜
🎜🎜
🎜🎜
🎜
🎜
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!