2011-04-26 7 views
3

MySQL 쿼리의 결과를 JSON 형식으로 인코딩해야합니다.MySQL 데이터베이스의 특수 문자 json_encode

데이타베이스의 이름은 utf8_unicode_ci입니다.

특히, PHP 함수 json_encode을 적용 할 때 null 값을 생성하는 데이터베이스에 저장된 특수 문자 (예 : €)가 있습니다.

어떻게 해결할 수 있습니까?

+0

관련 : [함께 문자열을 떨어 뜨리고에서로 json_encode()를 유지하는 방법 잘못된 문자] (http://stackoverflow.com/questions/4663743/how-to-keep-json-encode-from-dropping-strings-with-invalid-characters) –

답변

6

MySQL 데이터베이스 연결이 UTF-8로 설정되어 있지 않아 소스 데이터베이스가 UTF-8 인 경우에도 ISO-8859-1 문자가 반환됩니다.

Those characters will break json_encode()은 UTF-8 문자 집합에서 유효하지 않으므로 json_encode()입니다.

아마도 연결 인코딩을 UTF-8로 설정해야 할 것입니다. 이를 수행하는 방법은 사용중인 라이브러리에 따라 다릅니다. 기능의 mysql_* 가족

는 하나의 방법입니다

mysql_query("SET names utf8;"); 

또는 5.0.7> MySQL은

, 새로운

mysql_set_charset("utf8"); 
+0

감사합니다. 나는 "mysql_set_charset"함수를 사용하여 charset을 설정하려고 시도하지만, 이제 그는 특별한 chars를 자른다. – Dany

+0

@Dany가 처음 시도 했습니까? –

+0

예, 사용해보세요! 또한 PHP 함수 iconv 적용 할 시도하지만 특수 문자를 자릅니다 – Dany