我正在试图找出ascii文件中如何保存非ascii字符。例如,如果我打开notepad ++并将编码设置为UTF-8然后编写שלום,它将保存为11个咬。 BOM标记为3,每个字符为2。 (我在每个字节之前和之后添加了)
| 239 || || 187 191 215 || || || 169 215 156 || || || 215 149 215 || || 157 |
我可以查看这些值并找出它们所指的字母。例如。 http://utf8-chartable.de/unicode-utf8-table.pl?start=1408&number=128&utf8=dec
如果我打开一个新文件并将编码设置为ASCII并写入相同的单词。这将节省4口:
| 249 || 236 || 229 || 237 |
如果我打开ASCII文件,它会正确显示我输入的希伯来语单词。怎么知道的?是否有与unicode类似的引用?
答案 0 :(得分:2)
只有Unicode字符U + 0000 ... U + 007F才能以琐碎的方式在Ascii中进行编码。
Notepad ++没有Ascii作为编码。相反,它具有“ANSI”,这是编码集合的误称,通常是8位编码。根本不要使用它们。请改用UTF-8。
在您的情况下,可能会发生的情况是,在您的环境中,“ANSI”被视为8位拉丁语/希伯来语编码,其中代码编号在Ascii范围之外表示希伯来字母。这可以达到一定程度,但不适用于系统和程序。
答案 1 :(得分:1)
您展示的希伯来字符是Unicode代码点U+05E9
,U+05DC
,U+05D5
和U+05DD
。这些代码点不可能适合ASCII,它们的值太大。他们可以以字节八位字节0xF9
0xEC
0xE5
0xED
(分别)保存到文件的唯一方法是使用ISO-8859-8字符集对它们进行编码(在Windows中的代码页1255和28598中实现)。并且正确显示此类文件的唯一方法是使用相同的字符集进行解释。如果您没有做任何特别的事情来告诉操作系统使用该文件的特定字符集,那么您的操作系统必须设置为使用希伯来语作为其默认语言,并且该字符集是其处理ANSI(而非ASCII)数据的默认字符集。