Windows 中 Unicode 字符的奇怪行为

Windows 中 Unicode 字符的奇怪行为

好吧,我不知道这是否是一个编程问题,但它肯定是一个技术问题,所以我在这里问。我正在处理 PHP 代码中的一些国际化内容,为了确保我生成的 HTML 根据编码和其他内容正确显示 Unicode,我决定在我的 PHP 页面中添加一些中文文本,然后将其回显到浏览器中以完成我的测试用例。

于是我进入谷歌并输入“中文”,复制搜索返回的第一个中文文本(即汉语/漢語)。然后我将其复制到Notepad++我的编辑器中,令我惊讶的是,它显示了类似于的方框[][]/[][]。所以我以为中的编码Notepad++搞错了,我将编码更改为UTF-8UCS,但都没有用。我在新编码的文件中重新进行了操作,但仍然出现了方框。当我将相同的内容粘贴到Google和中时StackOverFlow(就像我在本帖中所做的那样),会显示正确的中文!

我甚至打开了Windows Clipboard Viewer,内容在剪贴板中显示为方框!我尝试将其粘贴到Windows Explorer address bar并使用它重命名文件,但仍然出现方框。但粘贴到我的时它会正确显示Chrome Browser address bar

这是 Windows 问题吗?既然我能够将其正确粘贴到 SO 中,那么内存中的数据应该被正确编码,对吗?但如果是这样,为什么它会在剪贴板查看器中显示为方框?

我在这里感到困惑...顺便说一下,我正在使用Windows XP with SP3

(我在这里问这个问题,即使它不是程序性的,因为它阻止我运行我的编程测试用例..)

答案1

Notepad++ 无法正确显示字符的原因可能是因为文档编码是“ANSI”。由于中文字符无法用“ANSI”表示,因此它们被混淆了。Notepad++ 处理编码时很奇怪。但简单的解决方法是通过其菜单将编码设置为 UTF-8粘贴任何东西。

在其他情况下,中文字符的显示可能会失败,因为渲染使用的字体不包含这些字符。这里有很大的变化。如果主字体不包含文本中出现的某些字符,许多程序可以回退到其他字体。

答案2

对于英文版 Windows XP,您必须明确告诉 Windows 您想要更多复杂脚本的支持。我面前没有 XP 框,但请尝试从控制面板 -> 区域设置开始,然后查找安装国际文本支持的选项。您可能需要原始安装媒体。

此步骤将安装 Windows 所需的其他字体和表格。您会看到它在网页上工作,因为 XP 时代的浏览器倾向于自己完成大量工作。大多数其他应用程序都希望 Windows 完成所有字体链接和字体回退工作,而 Windows XP 默认不会安装所有这些支持。

我相信 Windows 的新版本(例如 Vista 和 7)默认安装所有字体和表格。

相关内容