2013-10-03 2 views
0

JSON을 사용하여 PHP에서 자바 스크립트로 배열을 보내고 있습니다. 배열이 데이터베이스에서 데이터를 가져옵니다. JSON과 외국 캐릭터의 문제점에 대해 여러 주제를 다뤘습니다. 문제를 해결하기 위해 인코딩을 utf-8로 설정해야한다고 모두가 말합니다. 나는 그것을했다고 생각하지만 그것은 단지 도움이되지 않습니다. 그래서 나는 문제가 무엇인지 알아보기 위해 테스트를 실시한다. 쉽고 간단하게하기 위해 json_encode() 함수에 폴란드 문자로 문자열을 전달하려고합니다. 그래서 나는 index.php 파일을 만들었다. 내 텍스트 편집기에서 내가 BOM이없는 UTF-8 옵션 인코딩을 선택하고 난 코드에 시작 :JSON + 폴란드어 문자

<?php 
header('Content-Type: text/html; charset=utf-8'); 
$data = "polish characters: ążśęłóćźć"; 
$jsonData = json_encode($data); 
echo mb_detect_encoding($data) . "<br />; 
echo $jsonData; 
?> 

결과는 다음과 같습니다

UTF-8 
"polish characters : \u0105\u017c\u015b\u0119\u0142\u00f3\u0107\u017a\u0107" 

나는 여전히 출력 할 수 없습니다 폴란드어 문자. 나는 무엇이 잘못되었는지를 모른다. 제발 도와주세요 :)

+1

이 출력은 어디에서 볼 수 있습니까? JSON 데이터를 HTML 페이지로 바로 보내고 의미있는 방식으로 렌더러가 될 것으로 기대하지는 않습니다. 자바 스크립트 스크립트의 일부가 될 수 있지만, 어떻게 든 처리해야합니다. – Bruno

+1

PHP에 오타가 있습니다. – Daedalus

+0

JSON 출력시 헤더를 text/html로 설정하는 이유는 무엇입니까? JSON으로 문자열을 인코딩하지 않으면 (심지어 인코딩 한 다음 해독하면) 폴란드 문자가 표시됩니다. 또는 JSON으로 데이터를 출력하고 싶다면 UTF-8 인코딩 (\ u0105)이 유지되고 그것을 읽는 모든 코드로 변환 할 수 있습니다. –

답변

0

일을보십시오 :

echo json_decode(json_encode($data)); 

당신은 폴란드의 문자가 잘 표시되는 것을 볼 수 있습니다.

응용 프로그램은 최종 사용자에게 JSON을 직접 표시해서는 안되지만 먼저 친숙한 형식으로 구문 분석해야합니다. 해당 규칙을 준수하면 json_encode은 항상 문제를 일으키지 않아야합니다. 적절한 형식으로 해독하고 파싱해야하기 때문입니다.

+0

Omg 무엇 embaressment :) 당신은 모두 바로 거기에 아무 문제가 없었어요. 나는 그것을 직접 만들었다. 방금 PHP에서 javascript로 다차원 배열을 전달하는 메서드가 필요했고 JSON으로이 메서드를 보았습니다. 그리고 내가 couriosity에서 인코딩 할 때 나는 PHP로 인코딩 된 배열을 되풀이했습니다. 그리고 폴란드 문자가 없다는 것을 알았을 때 모든 것이 시작되었습니다. 나는 기본적으로 인코딩 된 배열에 폴란드 문자를 넣으려고 노력하는 몇 시간을 낭비했다. :) 나는 그렇게 눈이 멀어서 디코딩 된 배열을 javascript에서 출력하려고하지 않았다. 어쨌든 나를 도와 준 덕분에 – Bogdan