我只是想更好地理解字符编码,所以我做了一些测试。
我有一个保存为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</title>
</head>
<body>
<?php echo "\xBD"; # Does not work ?>
<?php echo htmlentities( "\xBD" ) ; # Works ?>
</body>
</html>
页面本身显示:
问题的关键在于我的Web应用程序有一堆字符编码问题,人们从Outlook或Word中复制和粘贴,然后字符转换为菱形问号(那些有真名吗?)
我正在尝试学习如何在页面加载时确保我的所有输入都转换为UTF-8(基本上是$_GET
,$_POST
和$_REQUEST
),以及所有使用适当的UTF-8处理方法完成输出。
我的问题是:为什么我的页面显示第一个回音的问号,是否还有人有关于在PHP中创建UTF-8安全Web应用程序的任何其他信息?
答案 0 :(得分:3)
0xBD无效UTF-8。如果你想在UTF-8中编码“½”,那么你需要使用0xC2 0xBD。
>>> print '\xc2\xbd'.decode('utf-8')
½
如果你想使用另一个字符集中的文本(在本例中为Latin-1),那么你需要先使用各种iconv或mb函数将其转码为UTF-8。
此外:
$ charinfo �
U+FFFD REPLACEMENT CHARACTER
答案 1 :(得分:1)
\xBD
无效,因为utf8你想要的是\xC2\xBD
,问号是什么应用程序替换无效的代码点,所以如果你在你的utf8文本中看到它不是utf8或损坏。