2011-02-26 3 views
0

같은 국제 문자를 사용하는 경우 :의 PHP로 json_encode 트렁크 문자열이 간단한 코드 쇼 당신에게 문제 é

class MyObject 
{ 
    var $publicString = "This is a weird character : é and it will trunk this sentence"; 
} 
$myObject = new MyObject(); 
var_dump(json_encode($myObject)); 

위해서 var_dump의 출력은 다음과 같습니다

string(47) "{"publicString":"This is a weird character : "}" 

왜?

+0

PHP 파일의 인코딩은 무엇입니까? –

+0

편집기에서 사용하는 인코딩에 따라 다릅니다. vi에서이 코드를 붙여 넣고 터미널에서 실행하면 json 문자열이 손상되지 않습니다. – matei

+0

코드가 제대로 작동 했으므로 다른 문제가 발생해야합니다. PHP 5.2, OS X leopard를 사용 중입니다. – rubayeet

답변

4

json_encode()은 UTF-8 데이터를 예상합니다.

파일이 ISO-8859-1로 인코딩되었다고 가정합니다. ISO-8859-1 é은 UTF-8에서 유효하지 않은 문자입니다.

해결 방법은 UTF-8로 파일을 저장하거나 iconv()을하고있을 것입니다 :

$myObject->publicString = 
    iconv("iso-8859-1", "utf-8//IGNORE", $myObject->publicString); 

var_dump(json_encode($myObject)); 
+0

좋아, 내가 기본 인코딩을 UTF8로 바꿨다. 고마워요 –

+0

@ Daok 업데이트 대답 –

+0

감사합니다 Pekka, 너무 간단 ... 죄송합니다 –

0

json_encode()는 UTF-8 문자 세트와 함께 작동합니다. 이 문제를 해결하는 방법은 link to an example입니다.