대리 용 페어 형태로 UTF-16 인코딩 된 문자가 있습니다. 나는 그 대리모 쌍을 화면상의 문자로 출력하고 싶다.출력 UTF-16? 조금 붙어서
누구나 가능하다는 것을 알고 있습니까?
대리 용 페어 형태로 UTF-16 인코딩 된 문자가 있습니다. 나는 그 대리모 쌍을 화면상의 문자로 출력하고 싶다.출력 UTF-16? 조금 붙어서
누구나 가능하다는 것을 알고 있습니까?
iconv('UTF-16', 'UTF-8', yourString)
귀하의 질문에 약간의 불확실성이 있습니다. 당신이 포함 된 UTF-16 이스케이프 시퀀스 ASCII 문자가있는 경우
,이 방법으로 UTF-8로 모두 변환 할 수 있습니다 : 그것은 이후
UTF-8의 문자를 제공function unescape_utf16($string) {
/* go for possible surrogate pairs first */
$string = preg_replace_callback(
'/\\\\u(D[89ab][0-9a-f]{2})\\\\u(D[c-f][0-9a-f]{2})/i',
function ($matches) {
$d = pack("H*", $matches[1].$matches[2]);
return mb_convert_encoding($d, "UTF-8", "UTF-16BE");
}, $string);
/* now the rest */
$string = preg_replace_callback('/\\\\u([0-9a-f]{4})/i',
function ($matches) {
$d = pack("H*", $matches[1]);
return mb_convert_encoding($d, "UTF-8", "UTF-16BE");
}, $string);
return $string;
}
$string = '\uD869\uDED6';
echo unescape_utf16($string);
(4 바이트가 필요합니다 BMP 외부).
모든 텍스트 인 경우 UTF-16 (등 HTML 태그를 포함하여)는, 당신은 단순히 출력이 UTF-16에있는 브라우저를 말할 수 :
header("Content-type: text/html; charset=UTF-16");
이것은 매우 드문, PHP 스크립트 때문에 (PHP가 멀티 바이트 지원으로 컴파일되지 않는 한) UTF-16으로 작성할 수 없으므로 리터럴 문자열을 어색하게 인쇄 할 수 있습니다.
그래서 UTF-16 형식의 텍스트 만 웹 페이지가 사용하는 인코딩으로 변환하려고합니다. 다음과 같이이 변환을 수행 할 수 있습니다.
//replace UTF-8 with your actual page encoding
mb_convert_encoding($string, "UTF-8", "UTF-16");
http://stackoverflow.com/questions/3506120/unicode-surrogate-pairs-question dup처럼 보입니다. –