Mat*_*Mat 33 arch-linux character-encoding chrome fonts
例如,在开发工具中,我得到类似的信息:

其中一些方块位于行尾,最初我以为它们是回车,但事实证明它们不是。
此外,广场出现后=或>在许多地方没有换行,并期待在十六进制编辑器显示该文件不存在根本之间的任何字符=和"(例如id="被显示为id=? ")
这也偶尔出现在网页中,例如我看到:

我复制了那句话,在十六进制编辑器看着它,并再次之间不存在性格e和:。源代码中也没有显示任何内容。
我以前从未见过这种情况,这是我几天前重新安装 arch 之后才出现的。
Chrome 是:版本19.0.1084.15 dev
Arch 是: Kernel 3.3.1-1-ARCH,x86_64
locale.gen已en_GB取消注释语言环境(UTF-8和ISO-8859-1)。chrome 中的编码默认为ISO-8859-1,但将其切换为UTF-8没有区别。
这是我使用的 html 文件:test.html
修复会很棒,解释会很棒,确认这只是(或不是)我的设置有问题也很好。
编辑:在调查字体后,我发现在这两种情况下它都试图使用 arial,它在 arch 中是ttf-ms-fonts包的一部分。安装它会导致字体发生变化,但方块仍然存在(尽管形状不同)。在这两种情况下,字体都不符合系统的默认字体。

小智 26
这为我解决了问题。安装 dejavu 字体。
sudo pacman -S ttf-dejavu
Run Code Online (Sandbox Code Playgroud)
打印Unicode 替换字符代替当前字体中不存在的字符是标准的。
一个可能的解决方法是更改您的操作系统(如果浏览器继承操作系统设置)或浏览器的默认字体。例如,我在 Ubuntu 11.10 上的 Firefox 11.0 使用的是“serif”字体(这可能是FreeSerif的同义词),它似乎支持很多 Unicode 字符。
PS:图片好像消失了。
有更好的方法来确定您缺少哪种字体,而不是盲目安装字体包。
例如,我执行以下操作来解决丢失的字体:
U+1F44B, U+1F3FC)pacman -S noto-fonts-emoji有效的。fc-cache -vf或者,您可以查找 Unicode 名称以帮助在 Google 搜索中查找字体:
$ echo -e | python -c 'import unicodedata, sys; s=sys.stdin.read().rstrip(); print([{ascii(c): unicodedata.name(c)} for c in s])'
[{"'\\U0001f44b'": 'WAVING HAND SIGN'}, {"'\\U0001f3fc'": 'EMOJI MODIFIER FITZPATRICK TYPE-3'}]
Run Code Online (Sandbox Code Playgroud)
你也可以让 Python 从 stdin 读取。为此,运行不带 的脚本echo ... |,复制粘贴未知的 Unicode 字符,按 Enter 和 CTRL-D 关闭stdin,python 将返回结果。
小智 7
noto从谷歌安装字体,为我做的。
yay -S noto-fonts
Run Code Online (Sandbox Code Playgroud)
现在,重新加载字体缓存:
fc-cache -vf
Run Code Online (Sandbox Code Playgroud)