>  기사  >  데이터 베이스  >  MySQL의 중국어 왜곡 문제에 대한 완벽한 솔루션

MySQL의 중국어 왜곡 문제에 대한 완벽한 솔루션

高洛峰
高洛峰원래의
2016-12-02 14:45:261112검색

MySQL에 중국어 왜곡 문자가 나타나는 이유는 다음과 같습니다.
1. 서버 자체 설정 문제, 예를 들어 여전히 latin1에서 멈춤
2.table 언어 설정 문제(포함) 문자 및 대조)
3. 클라이언트 프로그램(php 등)의 연결 언어 설정 문제
utf8 사용을 적극 권장합니다!!!!
utf8은 전 세계 모든 문자와 호환됩니다! !!!
1. 데이터베이스 및 테이블 생성 시 중국어 깨짐 방지 및 인코딩 방식 확인
1. 데이터베이스 생성 시: CREATE DATABASE `test`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';
2. 테이블 생성 시 CREATE TABLE `database_user` (
`ID` varchar(40) NOT NULL default '',
`UserID` varchar(40) NOT NULL default '' ,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

이 세 가지 설정이 완료되면 기본적으로 문제가 없습니다. 즉, 데이터베이스와 테이블을 구축할 때 동일한 인코딩 형식이 사용됩니다.
그러나 이미 라이브러리와 테이블을 구축한 경우 다음 방법으로 쿼리할 수 있습니다.
1. 기본 인코딩 형식 보기:
mysql> "%char%"와 같은 변수 표시;
+--------- -----+---------------+
| 변수_이름 |
+---------------- ----------+------------+
| Character_set_client |
| gbk |
| |
| 문자 세트_결과 | gbk |
| 문자 세트_시스템 |
+ -----------+-------------+
참고: 이전 2개를 확인하려면 세트 이름 utf8을 사용하고 이름 gbk를 다음으로 설정할 수 있습니다. 기본 인코딩 형식을 설정합니다.

SET NAMES utf8을 실행하는 효과는 다음을 동시에 설정하는 것과 같습니다:

SET Character_set_client='utf8';

SET Character_set_connection='utf8';
SET Character_set_results=' utf8';

2. 테스트 데이터베이스의 인코딩 형식 보기:

mysql> show create Database test;

+--------- ---+------ --------------- --------- --------------- ---------+
| 데이터베이스 생성 |
+---------+---- -------------- ---------- -------------- ---------------+
| 테스트 | DATABASE `test` /*!40100 기본 문자 세트 gbk */ |
+--------- ---+------ ------------------ ------ ------------------ +

3.yjdb 데이터베이스의 인코딩 형식을 확인하세요:

mysql> show create table yjdb;

| yjdb | CREATE TABLE `yjdb` (
`sn` int(5) NOT NULL AUTO_INCREMENT,
`type` varchar(10) NOT NULL,
`brc` varchar(6) NOT NULL,
`teller` int(6) NOT NULL,
`telname` varchar(10 ) NOT NULL,
`date` int(10) NOT NULL,
`count` int(6) NOT NULL,
`back` int(10) NOT NULL,
기본 키(` sn`),
고유 키 `sn`(`sn`),
UNIQUE KEY `sn_2` (`sn`)
) ENGINE=MyISAM AUTO_INCREMENT=1826 DEFAULT CHARSET=gbk ROW_FORMAT=DYNAMIC |

2 가져온 데이터에서 중국어 문자가 깨지는 문제 방지

1: 데이터 인코딩 형식을 utf-8로 저장

기본 인코딩을 utf8로 설정:
이름 utf8 설정;
데이터베이스 db_name 기본값을 utf8로 설정:
ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
테이블 tb_name의 기본 인코딩을 utf8로 설정:
ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
가져오기:
LOAD DATA LOCAL INFILE 'C:\utf8. txt' INTO TABLE yjdb;
2: 데이터 인코딩 형식을 ansi로 저장합니다(예: GBK 또는 GB2312)
기본 인코딩을 gbk로 설정:
이름 gbk;
데이터베이스의 기본 인코딩 설정 db_name을 gbk로:
ALTER DATABASE `db_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
테이블 tb_name의 기본 인코딩을 gbk로 설정:
ALTER TABLE `tb_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
가져오기:
LOAD DATA LOCAL INFILE 'C:\gbk.txt' INTO TABLE yjdb;

참고: 1. UTF8용 gbk를 가져오지 말고 gbk용 UTF8도 가져오지 마세요.

2 .DOS에서는 UTF8 표시가 지원되지 않습니다.

3. 웹 페이지의 문자 깨짐 문제 해결

웹 사이트 인코딩을 전 세계 모든 문자와 호환되는 utf-8로 설정합니다.
웹사이트를 오랫동안 운영하여 오래된 데이터가 많아 중국어 간체 설정을 더 이상 변경할 수 없는 경우 페이지 인코딩을 GBK로 설정하는 것이 좋습니다. GBK와 GB2312의 차이입니다. GBK는 GB2312보다 더 많은 문자를 표시할 수 있다는 것입니다. 단순화된 코드로 문자를 표시하려면 GBK만 사용할 수 있습니다.
1. /etc/my.cnf를 편집하고 [mysql] 섹션에 default_character_set=utf8을 추가합니다.
2. 연결 URL을 작성할 때 ?useUnicode=true&characterEncoding=utf-8 매개변수를 추가합니다. 3. "set names utf8" 또는 "set names gbk" 명령을 웹 페이지 코드에 추가하여 모든 연결 콘텐츠가
utf8 또는 gbk;


을 사용해야 함을 MySQL에 알립니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.