2013-06-03 2 views
0

좋아, & 나는 쿼리를했습니다. 고유 한 번호에서 유니 코드 기호를 표시 할 수있는 방법이 있습니까? 예를 들면. 나는 Integral 기호 (∫) &입니다. 유니 코드 번호 & HTML 코드는 각각 'U + 222B'및 '& # 8747;'입니다. 다음과 같이 HTML 코드를 인쇄하여 심볼을 표시 할 수 있습니다.PHP를 사용하여 번호에서 유니 코드 문자 표시

echo "& #8747;"; //Displays Integral [∫] symbol if we remove space after Ampersand. 

하지만 유니 코드 번호를 사용하면 동일한 결과를 얻을 수 있습니까? 내 웹 사이트 문자 중 하나에서 제대로 인코딩되지 않기 때문입니다. 아래와 같은 유니 코드 번호 만 표시합니다.

%u03A8 %u0D24 etc. 

의견을 말하십시오. 미리 감사드립니다.

답변

0

이 고객과의 작동하는지 모르겠지만, 가치가 시도 :

echo mb_convert_encoding('&#' . intval(0x0D24) . ';', 'UTF-8', 'HTML-ENTITIES'); 
+1

이가 .. 답변이 필요 코멘트 수 없었다. –

+0

내 대답이 바뀌었다. 너무 빠른 생각이었다 ... – silkfire

+0

@silkfire % u0D24 및 % u03A8에 해당하는 유니 코드 문자는 각각 'ത'및 'Ψ'입니다. 그러나 당신의 솔루션은 '¨ $'를 제공합니다! –

1
%u03A8 %u0D24 etc. 

이 자바 스크립트의 window.escape() 함수의 출력과 같습니다. JavaScript 코드를 변경하여 window.encodeURIComponent() 대신 호출하고 필요한 경우 urldecode()을 사용하여 PHP 측에서 해당 출력을 디코딩하십시오. 손상된 문자열이 이미 데이터베이스에 저장되어있는 경우

,이 유사한 코드를 사용하여 청소를 시도 할 수 있습니다 :

$s = preg_replace_callback('/(?:%u[0-9A-F]{4})+/', function ($m) { 
    return mb_convert_encoding(
     hex2bin(str_replace('%u', '', $m[0])), 'UTF-8', 'UTF-16BE'); 
}, $s);