我注意到,我可以将所有类型的 unicode 字符粘贴到 Visual Studio 2013 中,它们会正常显示。但如果我在 Notepad++ 中尝试使用相同的技巧,使用相同的字体,它们就不会显示。因此,Visual Studio 必须使用来自其他地方的其他字符来补充所选字体。在哪里?它是否像 CSS 一样,在某处有一个字体系列定义(您可以更改它吗?)或者这是某种奇怪的特殊行为,恰好手头有一堆 unicode 符号?
编辑:经过进一步的试验,问题中的特殊字符似乎出现在 Windows 记事本和其他一些程序中。尽管调整了编码和字体设置,但 Notepad++ 似乎主要还是无法处理这些字符。
答案1
Visual Studio 上没有此功能,您的系统必须安装包含 unicode 字符的字体。您也可以在记事本中显示这些字符,这就是格式的问题:在记事本中显示 Unicode
不同的软件程序以不同的方式对字符进行编码。记事本可以管理以多种格式(如 ANSI、Unicode 和 UTF-8)编码的文本。单击记事本的“另存为”窗口中的“编码”按钮即可找到这些选项。在文档中创建或更新文本后,您可以选择其中一个编码选项来保存文件。如果您不选择任何选项,记事本将以默认的 ANSI 格式保存您的文档。
答案2
该技术被称为字体替换。例如,网络浏览器会尝试查找具有匹配字符的字体 - 我认为 Firefox 首先会根据语言尝试一个字体列表,然后如果找不到它,大概会做一些其他神奇的事情。
看起来 GDI 可以使用几种不同形式的字体替换,尽管很难找到很多细节。 这份看上去有些老旧的 MSDN 文档给出了一些关于 windows 似乎在做什么的细节。这列出了一些使用的字体适用于各种语言。
我不知道为什么它在 Visual Studio 中可以工作而在记事本中却不行。VS 可能正在做一些超出标准 Windows API 的事情。