打印unicode字符

时间:2015-01-28 10:51:23

标签: php unicode currency

HTML Entity (decimal)   ₹
HTML Entity (hex)   ₹
How to type in Microsoft Windows    Alt +20B9
UTF-8 (hex) 0xE2 0x82 0xB9 (e282b9)
UTF-8 (binary)  11100010:10000010:10111001
UTF-16 (hex)    0x20B9 (20b9)
UTF-16 (decimal)    8,377
UTF-32 (hex)    0x000020B9 (20b9)
UTF-32 (decimal)    8,377

我需要打印这个字符,我这样做:

$str = htmlentities('&#8377');
echo html_entity_decode($str);

但它只输出&#8377。我期待char

3 个答案:

答案 0 :(得分:2)

如果没有尾随分号,则无法识别₹之类的字符引用。而且,你可以简单地使用

echo "₹"

或(如果您在整个过程中正确使用UTF-8,这是可推荐的)只需

echo "₹";

通常您不需要echo,因为您只需在HTML中编写引用₹或字符

浏览器是否呈现“₹”字符是一个不同的问题;您通常应该进行一些字体设置,可能使用可下载的字体@font-face

答案 1 :(得分:1)

想象一下:

echo html_entity_decode('₹', ENT_NOQUOTES, 'UTF-8');

答案 2 :(得分:1)

echo "₹";

只要输出到符合字符引用的HTML内容,就可以正常工作。对其他格式没有好处(例如注入JavaScript)。

echo "₹";

只要源文件以UTF-8编码保存,就能正常工作。

否则,字符U + 20B9印度卢比符号的UTF-8字节编码为0xE2,0x82,0xB9。所以:

echo "\xE2\x82\xB9";

或者,使用函数从代码点编号创建UTF-8字符串:

function unichr($i) {
    return iconv('UCS-4LE', 'UTF-8', pack('V', $i));
}

echo unichr(0x20B9);