我使用以下代码在localhost上创建了一个文件:
<?php
header('Content-Type: text/plain; charset=UTF-8');
echo "yoá";
Run Code Online (Sandbox Code Playgroud)
我的Firefox中的输出是:

为什么Unicode替换字符?
因为您的PHP脚本文件未从编辑器中保存为UTF-8.所有体面的编辑器都允许您在几种不同的编码之间进行转换和保存(甚至记事本现在都这样做).保存为UTF-8,您将看到该字符正常显示.
技术说明:
有问题的字符是代码点U + 00E1("带有急性的拉丁文小写字母").假设您已将脚本保存为单字节编码(最有可能),此字符将由十六进制值为0xE1的字节表示,二进制值为
11100001
Run Code Online (Sandbox Code Playgroud)
根据UTF-8编码规则,我们看到此字节属于该类别
1110zzzz
Run Code Online (Sandbox Code Playgroud)
这是在代码点范围U + 0800到U + FFFF中编码单个字符的正好三个字节中的第一个.但是,在您的情况下,在此之后不再有字节,或者如果它们不满足UTF-8编码限制.
因此,浏览器确定存在格式错误的字节序列并改为显示问号.
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |