2010-05-06 2 views
4

여기 문제를 찾으려고 할 때 내 수염이 자라고 있습니다.mysql 내용과 움라우트가있는 json_encode가 utf-8에 있습니다.

기본 문제는 Umlauts/Special Signs äöß ...가 작동하지 않는다는 것입니다. 나는 모두가 아프고 그 질문에 지쳤을 지 모르지만 온라인에서 발견 된 모든 해결책은 효과가없는 것처럼 보입니다.

utf-8 MySQL 데이터베이스에 utf-8 콘텐츠가 있습니다. 문제는 데이터베이스 연결의 어딘가에 있지만 나는 알아 내지 못합니다.

해서 character_set_client의 UTF8
character_set_connection을의 UTF8
character_set_database의 UTF8
character_set_filesystem 진
character_set_results의 UTF8
character_set_server 라틴 문제가 character_set_server 때문에의 라틴 인 경우
character_set_system UTF8

임 확실하지 메신저 그 MySQL 물건으로 아닙니다. 또한 mysql 서버의 설정 파일에 접근 할 수없는 원인을 변경하는 방법을 모른다.

무엇이든지 나를 혼란스럽게 만듭니다. 데이터베이스에서 내 결과를 얻고 에코하면 print_r이 올바른 결과를 제공합니다.

ini_set('default_charset','utf-8'); 
header('Content-Type: text/plain; > charset=utf-8'); 

파이어 폭스는 문자 인코딩이 UTF-8 만 말한다면 때 출력 :

print_r($listnew); 
echo json_encode($listnew[5]); 

인 print_r 결과 모든 권리 그러나 잘못이로 json_encode 않습니다.

에서 print_r :

[5] => Array (
     [id] => 5 
     [data] => U-Bahnhof Theresienstraße 
     [size] => 17 
) 

로 json_encode :

{ "ID"5 "데이터": "U-호프 Theresienstra \의 u00dfe", "사이즈"17}

json_encode가 제대로 작동하려면 utf-8 문자열이 필요하고 여기서 인코딩 문제가있는 것 같은 느낌이 든다. 그러나 나는 그것이 어디 있는지를 알 수 없다.

감사합니다.

감사합니다.

I3

답변

5

음, 어디 ... 난 그 실제로 올바른 방법이라고 생각합니다. \u00df은 올바른 유니 코드 표현 인 ß입니다. json_decode()이면 다시 ß이됩니다.

어디에서 문제가 발생합니까? 수신 측에서 올바르게 디코딩하지 않았습니까? 표준 json_* 기능을 사용해야합니다.

manual의 모든 예는 ASCII 범위를 벗어난 문자가 숫자 시퀀스로 변환되는 동일한 것을 보여줍니다.

+0

나는 그것이 아마도 디코딩에 의해 다시 번역 될 것이라는 사실을 몰랐다. 그래서 나는 어디에도 오류가없는 것을 추적했다. 난 그냥 출력을 생성하지만 나중에 json 개체를 처리하지 않습니다, 그래서 아마 다른 응용 프로그램에 의해 해결 될 것입니다. 죄송합니다. 도움을 주셔서 감사합니다. i3 – i3rutus

+1

때때로 인코딩 할 때 json_encode ($ array, JSON_UNESCAPED_UNICODE) – Miguel

관련 문제