2012-11-01 4 views
0

현재 데이터베이스에 다음 유니 코드 문자열이 저장되어 있습니다.유니 코드 문자가 올바르게 표시되지 않습니다.

\ u4ece \ u4e0b \ u5468 \ u4e00 \ u8d77 \ uff0c \ u5947 \ u5f02

내가 사과 APNS 서버에 PHP를 통해 발송하는 경우가 아이폰에 올바르게 표시됩니다. 나는 그러나 웹 사이트에 이러한 문자 (한자)를 표시하려면 , 그것은 한자를 표시하지 않고 순수하게 예정대로 \ u4ece \ u4e0b \ u5468 \ u4e00 \ u8d77 \ uff0c \ u5947 \ u5f02

누구나 할 수 올바르게 표시하는 방법을 알려주십시오.

+1

당신은 자세한 내용을 추가해야합니다. 귀하의 웹 사이트에있는 문자를 어떻게 출력하고 있습니까? 사용하는 웹 사이트의 인코딩은 ... –

답변

3

"유니 코드"가 아니며 유니 코드 이스케이프 시퀀스입니다. 이 : "아래"는 유니 코드 문자입니다. 이 : "\ u4e0b"는 문자열 "백 슬래시 네 개의 ee zero bee"입니다. 이스케이프 시퀀스를 JSON으로 정확히 넣으면 JSON이 디코딩 될 때 올바른 문자로 변환됩니다. JSON에서 이스케이프 시퀀스가 ​​사용되기 때문입니다. 이 문제는 JSON을 다음과 같이 손으로 작성한다는 것을 암시합니다.

$apns = "{\"message\":\"$unicodeEscape\"}"; 

Do not do. 선택과 JSON 인코딩 그것의 프로그래밍 언어의 기본 배열을 확인 :이 작업을 수행 현재 싶다면

$apns = json_encode(array('message' => '从下周一起,奇异')); 

이 문자열뿐만 아니라 아이폰의 "\ u4ece ..."로 표시 것, 문자열 내용이 원래 내용을 보존하기 위해 이스케이프 처리 된 JSON이 올바르게 표시되기 때문입니다.

HTML의 경우, 이러한 이스케이프 시퀀스는 처음에는 특별한 것이 아니며 확실히 한자를 의미하지 않습니다.

실제 한자는 특정 상황에서만 관련이있는 이스케이프 시퀀스가 ​​아니라 UTF-8로 인코딩 된 데이터베이스에 저장하십시오.

자세한 내용은 http://kunststube.net에서 대부분의 기사를 읽으시기 바랍니다.


가 JSON 이스케이프 분명히하고 있기 때문에, 가장 쉬운 방법은 현재 JSON로 구문 분석하는 것에있어 형식에서 그들을 다시 변환 : 만하면 작동

$string = json_decode("\"$string\""); 

을 문자열에는 물론 "처럼 JSON 구문이 무효화되는 항목이 없습니다. 그렇지 않으면 this solution을 적용 할 수 있습니다.


1

(이 각 문자는 유니 코드로 표현 될 수 있기 때문 문자열은 또한, "유니 코드 문자"로 구성되어 있습니다.)

+0

고맙습니다.하지만 이미 DB에 저장된 문자가이 시스템에 저장되어 있으며 시스템이 살아 있습니다. 데이터베이스의 데이터를 변경하고 싶지는 않습니다 (클린트와 관련하여 큰 혼란과 문제를 야기 할 수 있습니다). 이 문자들을 다시 유니 코드로 변환 할 수있는 방법이 없을까요? – HansStam

+0

업데이트를 사용해보십시오. – deceze

관련 문제