如何在记事本中强制进行 ANSI 编码

问题描述 投票:0回答:1

记事本有另存为ANSI的选项,但它似乎不起作用,至少在我尝试过的版本中不起作用,见下文。

当我选择此选项时,仍会呈现 Unicode 代码点,而不是 ANSI。该选项看起来非常直观。我是否误解了这是如何运作的?我需要先做点别的吗?

例如,如果我将以下文本粘贴到记事本中,并在记事本中选择“另存为 ANSI”选项,则无论如何都会呈现弯曲引号等 Unicode 代码点。 1. This is a – long dash 2. “Smart Quotes” 3. ‘Smart Quotes’ • Copyright symbol © • Fraction ¾

我正在寻找的功能确实存在于其他文本编辑器中,例如Notepad ++。我希望文本显示如下:

1. This is a – long dash 2. “Smart Quotes†3. ‘Smart Quotes’ • Copyright symbol © • Fraction ¾

以上是在Notepad++中通过切换编码实现的

注意:我仅将 Notepad++ 作为示例来说明我认为此记事本应该(用于?)如何工作。不幸的是我被记事本困住了。

编辑 我也可以用问号替换,比如: 1. This is a ?? long dash 2. ??Smart Quotes?? 3. ??˜Smart Quotes?? ?? Copyright symbol ?? ?? Fraction ??

我相信以上就是记事本过去的工作原理。

unicode notepad++ text-editor ansi notepad
1个回答
0
投票


当我选择此选项时,仍会呈现 Unicode 代码点,而不是 ANSI。

首先,准确地说,
ANSI 不是单一的固定编码

,但是这个问题中给出的细节,它与 ANSI = Windows-1252 一致,我将在这个答案的其余部分假设它。 其次,字符集并不相互排斥。在这种情况下,您演示的所有字符(破折号、各种智能引号、项目符号等)都存在于 Unicode

Windows-1252 中。因此,当您将其另存为 ANSI 时,或者确实采用任何 Unicode 编码时,完全可以正确处理这些字符。

我正在寻找的功能确实存在于其他文本编辑器中,例如Notepad ++。我希望文本显示如下:

1. This is a – long dash 2. “Smart Quotes†3. ‘Smart Quotes’ • Copyright symbol © • Fraction ¾

你为什么想要这个?这就是 

mojibake,这通常是人们寻求修复而不是重现的东西。我并不要求这很困难,但回答你为什么想要复制它可能会导致不同的解决方案来实现相同的目标。

以上是通过Notepad++中切换编码实现的。

是的,您已将编码从 UTF-8 切换为 ANSI。文本文件本身没有固有的编码,而是在读取和写入文本文件时使用编码。 Notepad++ 默认为 UTF-8,因此当您最初键入时,这就是用于写入文本的字符编码。然后当你切换到 ANSI 时,你正在读取新编码下的底层数据,这不是你写的。

仅以项目符号字符为例,在UTF-8中,项目符号字符由三个字节

E2 80 A2

表示。但在 Windows-1252 中,

E2
表示“â”,
80
表示“€”,
A2
表示“¢”,这就是为什么在解释文本时您会看到这些确切的字符而不是项目符号点字符作为 ANSI。

注意:我仅将 Notepad++ 作为示例来说明我认为此记事本应该(用于?)如何工作。

记事本可能像以前的版本一样工作,尽管我不得不猜测它需要是一个非常旧的版本才能支持 Unicode。请注意,记事本基本上会根据文件的预期编码进行“猜测”,以决定向您显示什么内容,并且猜测算法多年来一直在更新。例如,参见臭名昭著的
“布什隐藏事实”

bug。 我也可以用问号替换

问号是一个常见的

替换字符

,当底层数据与用于读取的编码不兼容时,无论如何,在非 Unicode 上下文中。如果你可以让记事本将文本解释为 Windows-1252,如果你输入一个未定义的字节(在 Windows-1252 中,只有字节
81

8D

8F
90
9D
),你可能会在那里得到问号。
    

© www.soinside.com 2019 - 2024. All rights reserved.