2014-05-10 5 views
0

PHP 프로그램을 통해 외국어 (프랑스어, 중국어 등)가 MySQL 테이블에 입력되었습니다. 그러나이 용어를 사용하여 검색 할 때 레코드를 찾지 못합니다. 그 이유는 입력 된 용어가 MySQL 테이블에 다르게 저장된다는 것입니다.PHP를 통해 입력 된대로 MySQL에 외국어 입력을 저장하는 방법 (현재 변경 중)

예를 들어, MysQL 테이블에서 항목은 Anmei입니다. 그러나 이것이 PHP를 통해 입력되었을 때 (그리고 PHP를 통해 표시 될 때), Anémie로 표시됩니다. 데이터에는 의미가 없어지지 않는 방법이 있지만 Anémie를 입력하여 검색을 수행 할 수 없습니다. 테이블에 Anémie가 포함되어 있으면 검색이 성공합니다.

테이블을 검사했으며 UTF8로 인코딩되었습니다. 그러나 모든 문자 집합 변수가 UTF8이 아닌 것은 아닙니다.

"해서 character_set_client"[ "값"] => 끈 (6) "라틴"} "character_set_connection을"[ "값"] => 끈 (6) "라틴"} "character_set_database"[ "값 "] => 문자열 (4)"utf8 "} "character_set_results "["값 "] => 문자열 (6)"latin1 "} "character_set_server "["값 "] => 문자열 (6)"latin1 "}

나는 또한 테이블 변경, 변경을 사용하여 다른 설정 한 문자에서 변화에 MySQL을 설명서의 조언을 따르려고 노력했다 "character_set_system"[ "값"] => 문자열 (4) "UTF8"} 방울뱀 그런 다음 alter table을 사용하여 utf8의 문자 집합으로 varchar로 다시 변경합니다. 그러나 이것은 효과가 없습니다.

두 가지 질문이 있습니다. 첫째, 검색을 통해 찾을 수 있도록 MySQL 테이블의 데이터를 어떻게 변환 할 수 있습니까? 둘째, 앞으로 입력 한 내용이 테이블에 입력되도록하려면 어떻게해야합니까?

답변

0

연결 문자 집합을 UTF-8로 설정해야한다는 점을 고려해야합니다. 이것은 거의 항상 잊혀져 있습니다.

정확하게 수행하는 방법은 사용중인 라이브러리에 따라 다릅니다. PDO의 경우 연결 문자열에 ;charset=utf8을 붙이기 만하면됩니다.

+0

이 응용 프로그램에서 구식 PHP 접근 방식을 사용하고 있습니다. 여전히 변환되지 않은 응용 프로그램을 유지 관리합니다. 내 연결 문자열은 "$ connection = mysql_connect ('abc.com', 'xxx', 'yyy') – user3624182

+0

이 경우 [mysql_set_charset'] (http://php.net/mysql-set-charset) . –