2011-01-25 2 views
1

나는 모국어 학습을위한 응용 프로그램을 개발 중입니다. 일부 문자를 'ẽũ'로 저장해야합니다. 내 데이터베이스는 기본 데이터 정렬을 사용하는 utf-8 charset으로 설정되고이 문자의 영향을받는 테이블도 설정됩니다. 이 경고가 발생MySQL의 문자셋이 필요합니다

INSERT INTO text(spanish,guarani) VALUES('text','ẽũ'); 

: 나는 일반 SQL 삽입하여 행을 추가 할 때

문제는

Warning Code : 1366 Incorrect string value: '\xE1\xBA\xBD\xC5\xA9' for column 'guarani' at row 1 

을 그리고 결과가 "??" 그 문자가있는 곳.

질문 :이 문자는 UTF-8 문자 세트에서 다루지 않습니까? 어느 게 필요한가요?

주 : 라틴어-1

감사와 같은 문제.

+0

연결이 어떤 데이터 정렬입니까? 어디에서 질문을 보내시겠습니까? –

+0

표준 HTML 양식에서 전송. 연결 및 통신은 PHP를 통해 이루어집니다. – gustyaquino

답변

1

QUICK !!! 읽기 http://www.joelonsoftware.com/articles/Unicode.html

독서가 필요합니다. 당신이 것을 읽고 나면

, 당신은 스스로에게 물어해야합니다

  1. 어떤 인코딩을 사용하여 연결합니다.
  2. 데이터 정렬을 사용하는 로케일은 무엇입니까? (적용된다면).
  3. SQL 문은 어떤 인코딩을 사용합니까?
  4. 문자열 리터럴은 어떤 인코딩을 사용합니까?
  5. HTML 형식으로 인코딩되는 인코딩은 무엇입니까?
0

다른 답변과 마찬가지로, 당신은 정말로 유니 코드의 기초를 읽고 이해해야합니다. 어렵지 않습니다. (언젠가는 당신이 그것을 이해할 수 있습니다.) 거의 모든 프로그래머에게 (그리고 확실히 당신을 위해) 필요한 지식입니다. 일시적인 지식이 아니며보다 쉽고 행복하게 살 수 있습니다.

이러한 문자는 UTF-8 문자 집합으로 처리되지 않습니까?

UTF-8은 유니 코드 문자 세트이며, 유니 코드는 모든 문자를 (사실상) 포함합니다. 반면에 MYSQL의 'utf8'인코딩은 사실 UTF-8이 아니기 때문에 BMP 외부의 일부 문자는 남겨 둡니다. 그러나 그것은 여기서 당신의 문제가 아닙니다.

http://www.fileformat.info/info/unicode/char/1ebd/index.htm http://www.fileformat.info/info/unicode/char/169/index.htm

당신은 당신의 두 문자가 유효 유니 코드 인 BMP (따라서 MySQL이 마비 안에있는 것을이 참조 'utf8'이 그들을 지원해야합니다), 심지어 UTF-8 인코딩을 볼 수 있습니다. 아시다시피, \xE1\xBA\xBD\xC5\xA9은 옳은 것처럼 보입니다. 그래서 문제는 다른 곳에있는 것처럼 보입니다. DB가 utf8입니까?

+0

원래 latin-1이었고 테스트를 위해 utf-8로 변경되었습니다.그 변환이 제대로 이루어지지 않았습니까? 이 코드를 사용하여 DEFAULT CHARACTER SET utf8 – gustyaquino

+0

원래 * *는 latin-1 이었습니까? utf-8 *에 언제 어떻게 변경 되었습니까? "DEFAULT CHARACTER SET"는 언제 적용되며, 언제 적용됩니까? – Arafangion

+0

@Arafangion MySQL 용 GUI 인 SQLyog를 사용하여 데이터베이스를 만들었습니다. 그런 다음 명령 줄에서 다음 명령을 사용하여 charset 변경을 적용했습니다. ALTER DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci – gustyaquino