2017-10-31 15 views
0

안녕하세요 저는 sql 데이터베이스에 일부 중국어 문자를 삽입하려고합니다. 어떤 캐릭터에 대해서는 어떤 문제도 발생하지 않지만, 두 번째 글자의 두 번째 글자에 대해서는 아래와 같이 에러가 발생합니다. 전에 이런 종류의 문제에 직면 한 사람이 있습니까? 잘못된 문자 집합이나 데이터 정렬을 선택하고 있습니까?chense 문자를 삽입 할 수 없습니다. mysql

참조 https://dev.mysql.com/doc/refman/5.7/en/faqs-cjk.html#faq-cjk-why-cjk-fail-searches

CREATE TABLE testing (test VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci); 
INSERT INTO testing VALUES('薛'); 
INSERT INTO testing VALUES('薛萍'); -- ERROR - MySQL Database Error: Incorrect string value: '\xF0\xA6\x86\xB1\xE8\x90...' for column 'test' at row 1 
select * from testing; 

답변

2

Unicode character inspector에 따르면 薛萍에 대한 UTF 인코딩입니다 :이 약

薛 = E8 96 9B 
= F0 A6 86 B1 
萍 = E8 90 8D 

MySQL의 불만 :

\xF0\xA6\x86\xB1\xE8\x90 

그래서 모든 것을 분명히 코르 rect, 약간의 구현에 대해서는 utf8_unicode_ci에 관한 세부 사항을 저장한다. 이것은 MySQL에서 불완전한 UTF-8 인코딩으로 3 바이트 문자까지 허용한다. 따라서 utf8_unicode_ci으로 저장할 수 없습니다.

utf8mb4_... 인코딩으로 전환해야합니다.

+0

여전히 작동하지 않습니다. 시도해 보셨습니까 드롭 테이블 테스트; CREATE TABLE 테스팅 (test VARCHAR (500) CHARACTER SET utf8mb4); INSERT INTO 테스트 VALUES ('薛 萍'); –

+0

똑같은 오류 메시지가 나타 납니까? utf8 대신에 utf8mb4에 대해 사용하는 클라이언트 언어 또는 프레임 워크에 관계없이 데이터베이스 연결을 구성 했습니까? –

+0

데이터베이스 수준에서 아무 것도 변경하지 않아도 스크립트에서 표시된대로 테이블 수준의 문자 집합 만 변경했습니다. –

0

utf8mb4에 세트를 가지고뿐만 아니라, 당신은 또한 클라이언트가 utf8mb4에게 (단지 UTF8)를 말하는 것을 MySQL을 알려야합니다. 일부 클라이언트의 경우 연결을 만들 때이 방법이 가장 적합합니다. 연결 후 바로 수행해야하는 보조 명령이 있습니다 (예 : SET NAMES utf8mb4).

디버깅 Q & A : (? 또는 신규) Trouble with UTF-8 characters; what I see is not what I stored

다소 특이한 한자 것으로 보인다

; 심지어 http://unicode.scarfboy.com/?s=f0a686b1 그래픽을 표시하지 못합니다.