2013-06-05 1 views
0

내 필드에 utf8_general_ci 콜렉션을 사용하고 있습니다. lang_name 어떤 언어로 번역 된 데이터를 저장합니다. 데이터베이스에서 데이터를 가져와 json에서 인코딩 할 때 출력은 "lang_name":"\u0905\u0902\u0917\u094d\u0930\u0947\u091c\u093c\u0940"이고 데이터베이스의 값은 입니다.입니다.utf8_general_ci로 인코딩 된 데이터를 json으로 표시하는 방법은 무엇입니까?

데이터베이스에서 json 형식으로 저장 될 때 실제 값을 얻으려면 어떻게해야합니까?

+4

JSON 인코딩 후 UTF-8 문자로 된 문자열이 예상되는 결과입니다. 나는 문제/문제가 무엇인지 이해할 수 없다. 디코드를 원하면'json_decode()'를 사용하십시오. –

+0

Pekka가 말했듯이, 완벽하게 유효한 결과물입니다. 실제로 json을 지원하는 모든 응용 프로그램은 json을 어떻게 처리해야하는지 알 것입니다. – Wrikken

+0

누군가가 JSON의 작동 방식을 읽어야합니다. –

답변

1

\uxxxx에 JSON 문자열에 아무런 문제가 없습니다. JSON 자체의 특수 문자 인코딩 방식이므로 아무런 문제가 없습니다. UTF-8.

올바른 JSON 디코딩 방법을 사용하면 문자열이 다시 올바로됩니다.

PHP 5.4.0부터 인코딩 된 경우 JSON 문자열에 특수 문자를 실제로 출력 할 수 있으므로 브라우저에서 예를 들어 지원할 때 특수 문자를 표시 할 수 있습니다. UTF-8.

사용 :

$json = json_encode($my_utf8_meshup, JSON_UNESCAPED_UNICODE);

JSON_UNESCAPED_UNICODE 플래그 문자가 해당 UTF8 인코딩 된 문자로 변환되도록합니다.

아마 당신이로 json_encode 이후 inconv() 매개 변수 또는 mb_convert_encoding()의 멋진 조합을 사용하여이 작업을 수행 할 수있는 방법이 없다() (PHP 5.4.0 이전) 결국 \uxxxx 문자 변환 매핑을 끝낼 것입니다. 다시 말하지만 JSON (교통)에 적합하지만 사람이 읽을 수있는 것은 아닙니다.

관련 문제