字符编码失败,为什么\xBD在PHP+;HTML
我只是想更好地理解字符编码,所以我正在做一些测试 我有一个保存为UTF-8的PHP文件,如下所示:字符编码失败,为什么\xBD在PHP+;HTML,php,utf-8,character-encoding,Php,Utf 8,Character Encoding,我只是想更好地理解字符编码,所以我正在做一些测试 我有一个保存为UTF-8的PHP文件,如下所示: <?php declare(encoding='UTF-8'); header( 'Content-type: text/html; charset=utf-8' ); ?><!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Test
<?php
declare(encoding='UTF-8');
header( 'Content-type: text/html; charset=utf-8' );
?><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Test</title>
</head>
<body>
<?php echo "\xBD"; # Does not work ?>
<?php echo htmlentities( "\xBD" ) ; # Works ?>
</body>
</html>
试验
页面本身显示以下内容:
问题的要点是,我的web应用程序有一系列字符编码问题,人们从Outlook或Word复制和粘贴字符,字符被转换成菱形问号(这些问号有真实姓名吗?)
我正在尝试学习如何确保在页面加载时(基本上是$\u GET
,$\u POST
,以及$\u REQUEST
),所有输入都转换为UTF-8,并且所有输出都使用适当的UTF-8处理方法完成
我的问题是:为什么我的页面显示了第一个echo的问号,有人有关于在PHP中创建UTF-8安全web应用程序的任何其他信息吗?0xBD不是有效的UTF-8。如果要在UTF-8中编码“½”,则需要使用0xC2 0xBD
>>> print '\xc2\xbd'.decode('utf-8')
½
如果要使用另一个字符集的文本(本例中为拉丁语-1),则需要先使用各种iconv或mb函数将其转换为UTF-8
此外:
\xBD
作为utf8无效您想要的是\xC2\xBD
,问号是应用程序用什么替换无效的代码点,因此如果您在utf8文本中看到它不是utf8或已损坏
$ charinfo �
U+FFFD REPLACEMENT CHARACTER