如何从他们的数字打印原始UTF-8字符?

时间:2010-05-01 00:59:36

标签: php unicode utf-8

说我想从其ÿ的Unicode / UTF-8或U+00FF的十六进制数字打印c3 bf(带有分音符的拉丁小y)。 我如何在PHP中执行此操作?

原因是我需要能够创建某些UTF-8字符,用于在我的正则表达式和字符串函数中进行测试。但是,因为我的键盘上的键少于200个我无法键入它们 - 并且因为很多时候我被困在一个仅限ASCII的世界 - 我需要能够创建它们的基础他们的 ASCII安全,UTF-8字符代码。

注意:为了在浏览器中正确显示,我知道第一步是

header('Content-Type: text/html; charset=utf-8');

2 个答案:

答案 0 :(得分:8)

你有你需要的一切 十六进制值也可以在双引号字符串中识别

echo "\xc3\xbf";

答案 1 :(得分:1)

具有小包功能的解决方案1 ​​

<?php

function chr_utf8($n,$f='C*'){
return $n<(1<<7)?chr($n):($n<1<<11?pack($f,192|$n>>6,1<<7|191&$n):
($n<(1<<16)?pack($f,224|$n>>12,1<<7|63&$n>>6,1<<7|63&$n):
($n<(1<<20|1<<16)?pack($f,240|$n>>18,1<<7|63&$n>>12,1<<7|63&$n>>6,1<<7|63&$n):'')));
}

echo chr_utf8(9405).chr_utf8(9402).chr_utf8(9409).chr_utf8(9409).chr_utf8(9412);

//Output ⒽⒺⓁⓁⓄ

https://eval.in/748062 ...

中查看

解决方案2使用json_decode

<?php

$utf8_char='["';
for($number=0;$number<55296;$number++)
$utf8_char.='\u'.substr('000'.strtoupper(dechex($number)),-4).'","';
$utf8_char=json_decode(substr($utf8_char,0,-2).']');

echo $utf8_char[9405].$utf8_char[9402].$utf8_char[9409].$utf8_char[9409].$utf8_char[9412];

//Output ⒽⒺⓁⓁⓄ
相关问题