我的电脑最近可以正常显示 Unicode 字符。但是,它最近停止显示这些字符,我可以在另一台计算机上的记事本中成功显示这些字符,运行相同的 Win 7,但它是 x86 而不是 x64。这两种情况都使用相同的字体(arial),在 x64 机器上切换到支持 Unicode 的字体可以解决问题。有什么想法吗?
음식
答案1
有什么想法吗?
记事本字体
在 Windows 记事本中,通常不能混合使用字体,每次只能选择一种字体。但是,对于较新版本的 Windows,此语句必须符合要求。
Windows XP 及更早版本
在 Windows XP 及更早版本中,记事本无法显示所选字体中没有的字符。因此,字符缺失或显示不正确(通常显示为空框)可能是由以下原因造成的:
使用 Arial 而不是 Arial Unicode。
Arial 是 778,552 字节,Arial Unicode 是 23,275,812 字节。区别在于,大量字符属于 Arial Unicode,但不属于 Arial。(这些大小来自 Vista,而不是 XP,但区别类似)。
省略字节顺序标记 (BOM)
Windows 要求 Unicode 文件(UTF-8、UTF-16 LE 等)包含 BOM。如果不包含,Windows 会使用 Windows API 函数(isTextUnicode
)猜测编码,但众所周知,该函数容易出错,导致显示多个 Latin-1 字符,而不是一个正确字符。
(更新)
Windows Vista 及以上版本
记事本现在采用了在网络浏览器中首次出现的策略 - 如果当前字体中不存在该字符,则查找包含该字符的字体,并且仅针对该字符使用其他字体。因此,如果一台计算机上有不同的附加字体,它的表现可能会与其他计算机不同(即使操作系统相同)。
“错误”的 Arial
我不知道使用的算法,但似乎有可能,如果您的 Arial Unicode 损坏或小得多,缺少一些字符,记事本可能会认为该字体包含实际上没有的字符。3,395 KB 的 Arial 字体不是我在 Windows 7 上所期望的。也许安装的某些应用程序已将默认字体替换为某种有缺陷的字体?
额外的“糟糕”字体 或者,记事本可能会先搜索其他最近添加的字体来查找缺失的字符,然后再查看 Arial Unicode。如果此其他字体声称包含该字符但实际上并不包含(例如不正确的布局标签,记事本可能无法显示字符
(更新 2)
建议的操作
在具有 3,395 KB Arial 常规字体的计算机上,将字体文件复制到安全的地方,卸载它,然后安装从另一台计算机复制的 761 KB Arial 常规字体文件。