2012-05-17 2 views
0

영어로 제공되지 않는 AJAX로 게시물을 제출하면 %u4F60%u662F%u5982%u4F55%u505A%uFF1F과 비슷한 것을 얻을 수 있습니다. PHP로 해결할 수있는 방법은 무엇입니까? 나는 utf8_decode을 시도했지만 작동하지 않습니다.텍스트 코드 (PHP, languages)

도움이되는 경우 AJAX로 텍스트를 제출합니다.

+2

출력 문서에서 정의 된 문자 집합은 무엇입니까? 변경해야 할 수도 있습니다. –

+0

저는 iso-8859-1을 사용하고 있습니다. 그리고 롤, 나는 그것을 올렸을 때 생각하지 않았습니다. – Jake

+1

'$ thing = new Thing; $ thing-> do_some_stuff();' –

답변

2

원하는대로 할 수 있습니까?

<?php 

    function utf8_urldecode ($str) { 
    return urldecode(preg_replace_callback('/%u([0-9A-F]{4,6})/i', function($matches) { 
     $int = hexdec($matches[1]); 
     switch (TRUE) { 
     case $int < 0x80: 
      return pack('C*', $int & 0x7F); 
     case $int < 0x0800: 
      return pack('C*', (($int & 0x07C0) >> 6) | 0xC0, ($int & 0x3F) | 0x80); 
     case $int < 0x010000: 
      return pack('C*', (($int & 0xF000) >> 12) | 0xE0, (($int & 0x0FC0) >> 6) | 0x80, ($int & 0x3F) | 0x80); 
     case $int < 0x110000: 
      return pack('C*', (($int & 0x1C0000) >> 18) | 0xF0, (($int & 0x03F000) >> 12) | 0x80, (($int & 0x0FC0) >> 6) | 0x80, ($int & 0x3F) | 0x80); 
     default: 
      return $matches[0]; 
     } 
    }, $str)); 
    } 

    $str = "%u4F60%u662F%u5982%u4F55%u505A%uFF1F"; 

    echo utf8_urldecode($str); 

나는 전에 바이너리 진수 UTF-8 코드 포인트를 변환 시도하지 당신이 주위에 당신의 머리를 얻을 때 실제로 아주 쉽게 밝혀 적이 없다. 물론 캐릭터가 실제로 무엇인지에 따라 브라우저에서 여전히 난센스로 표시 될 수 있습니다. 올바르게 렌더링하려면 언어 팩을 설치해야 할 수도 있습니다.