【发布时间】:2013-12-24 07:08:42
【问题描述】:
Unicode 字符的某些组合似乎存在问题。我会告诉你我使用 Notepad++ 的意思。
- 在 Notepad++ 中新建一个文本文件,并将编码更改为 UTF-8(BOM 无关紧要)。
- 复制并粘贴以下四个箭头:↑↓↙↘。这应该看起来不错(见下面的第一张图片)。
- 现在在第二个箭头之后插入一个换行符(Windows/Unix 无关紧要)。现在第一行看起来还不错,但是第二行中的箭头被占位符框替换了(见下图)。
- 保存和重新打开没有区别。仍然在第二行框。删除换行符,一切都恢复正常了。
此问题并非 Notepad++ 独有。其他程序在加载带有换行符的文本文件时也会显示垃圾。令人惊讶的是,标准的 Windows 记事本显示得很好。
这是工作文件,一次是十六进制,一次是 Notepad++:
E2 86 91 E2 86 93 E2 86 99 E2 86 98
这是损坏的文件。请注意,所有不同之处在于添加的换行符 (0D 0A)。
E2 86 91 E2 86 93 0D 0A E2 86 99 E2 86 98
谁能分享一下这里发生了什么?
编辑:我正在编写一个以文本格式创建输出的程序。当几个文本编辑器无法正确显示我的程序输出时,我偶然发现了这个问题,所以我首先假设我的程序有问题。就目前而言,它的输出很好。所以真正的问题是:
有没有办法更改第二个(损坏的)示例,使其在您的典型编辑器中正确显示?
【问题讨论】:
-
这很有趣,但在 StackOverflow 上离题了。
-
有趣的是,如果我将字符串 ↑↓↙↘ 粘贴到第二行的末尾(我将其视为两个带有问号的小框),那么前两个字符将被恢复并行阅读:↙↘↑↓↙↘。
-
取决于字体。与例如Courier New, 盒子可见。使用 Consolas,带有问号的框。使用 Calibri,箭头显示在 OK 上。所以这似乎只是一个渲染错误。
-
@Jukka:我已经编辑了这个问题,以澄清为什么我认为实际上是主题。您能否更具体地说明为什么您认为它不是?
-
这是关于某些程序中的一些故障,而不是关于您正在编写或修改的某些代码的编程问题。如果 Notepad++ 的作者向它提供了有关其源代码等的足够信息,那将是一个话题。
标签: unicode utf-8 character-encoding