说我想从其ÿ
的Unicode / UTF-8或U+00FF
的十六进制数字打印c3 bf
(带有分音符的拉丁小y)。 我如何在PHP中执行此操作?
原因是我需要能够创建某些UTF-8字符,用于在我的正则表达式和字符串函数中进行测试。但是,因为我的键盘上的键少于200个我无法键入它们 - 并且因为很多时候我被困在一个仅限ASCII的世界 - 我需要能够创建它们的基础他们的 ASCII安全,UTF-8字符代码。
注意:为了在浏览器中正确显示,我知道第一步是
header('Content-Type: text/html; charset=utf-8');
答案 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 ⒽⒺⓁⓁⓄ
中查看
解决方案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 ⒽⒺⓁⓁⓄ