我的文本文件存在格式问题。我认为最初是 Windows-1252。然后我尝试使用 Notepad++ 将文件重新格式化为另一种编码格式,做了几次,结果一团糟,就像???A??a?s??A\xc2\xa7???A??a?s??A\xc2\xa0???A??a?s??A\xc2\xb5???A??a?s??A\xc2\xae???A??a?s??A\xc2\xa4????????????
. 我不记得我所做的实际操作顺序。我唯一确定的是我在 ANSI、UTF-8 和 Windows-1251 之间切换。所有这些都没有让我的文本恢复到正确的西里尔字母格式,就像以前一样。
那么,有没有办法取回我在该文件中的信息呢?txt 文件是否包含所有信息,而我只需要弄清楚我需要什么编码格式,或者它被替换并且信息永远丢失?最初,我的文件中有一些西里尔文字。
\nGia*_*968 15
当您在字符集之间切换时,系统会尝试以某种方式保留字符。但由于并非所有字符集都包含所有字符,因此在此过程中字符丢失,因此这些文件将永久乱码。
\n在您的示例中,如果您从西里尔文(应该是UTF-8)到 ANSI (又名:Windows-1252),然后再到Windows-1251(较旧的西里尔文脚本),每次转换都会丢失数据。
\n抱歉,某种备份是您唯一的希望。
\nFWIW,此页\xe2\x80\x94 \xe2\x80\x9c 这些有趣的字符从哪里来?\xe2\x80\x9d \xe2\x80\x94 有一个很好的解释,解释了这是如何发生的以及这些问号的含义(?
)意思是:
\n\n一个字节是 8 位,该值可以方便地用十六进制(通常缩写为“hex”)或十进制表示,或者不太方便地用八进制或二进制表示。
\n例如,字符“A”用单个字节表示,如下所示:
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n
A 二进制 01000001 十六进制 41 十进制 65 八进制 101 Unicode 代码点 U+0041 字符“A”在 UTF-8、ASCII、ISO/IEC 8859 和 Windows 12xx(所有我们常用的来源)中是相同的。因此,在这种情况下,我们不必担心任何不兼容,因为不存在任何不兼容。
\n如果我们看一下欧元符号 (\xe2\x82\xac),那就是一个完全不同的故事:
\n\xe2\x82\xac - 欧元货币符号
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
字符编码 UTF-8(3 字节序列) ISO/IEC 8859-15 Windows-1252 二进制 11100010 10000010 10101100 10100100 10000000 十六进制 e2 82 交流 a4 80 十进制 225 130 172 164 128 八进制 342 202 254 244 200 Unicode 代码点 U+20ac 我们常用的编码系统都以不同的方式表示欧元符号。如果我们将 ISO-8859-15 编码的文件中的字节复制到 Windows-1252 中运行的数据库,我们的欧元符号(十六进制 a4)将不再看起来像欧元符号。在 Windows-1252 中,十六进制 a4 是“\xc2\xa4”。从 Windows-1252 到 ISO-8859-15,我们会得到一个问号或“\xe2\x97\xbc”,因为在 ISO-8859-15 中,十六进制 80 未定义。7 位 ASCII 和 EBCDIC 没有任何方法来表示欧元符号。这些编码系统是在欧元存在之前定义的,因此这并不奇怪。
\n虽然我们可以使用一个一致的 8 位代码,但一切都非常简单,但我们不能在现实世界中再这样做,所以我们需要更好的东西。UTF-8 是更好的选择,所以我们将解释一下它是如何工作的。
\n