文件输出到记事本.txt

File output to Notepad .txt

本文关键字:txt 记事本 输出 文件      更新时间:2023-10-16

我不能很好地表达,所以我就陈述事实了。

情况:我的c++程序输出扩展ascii字符到一个文本文件。

问题:当我用记事本打开我的文本文件时,它不正确地显示这些字符。(我用的是Windows XP)

结论:如果要我猜的话,我会说Notepad使用错误的编码保存了我的文件。是否有一种方法来修复它,所以我的程序保存正确的输出到文本文件?

代码片段:

char box[] = {
    201, 205, 187,
    186, 32, 186,
    200, 205, 188           
};

当我outputFile << box[0]时,我的预期结果是"。相反,记事本显示"É"。

预期输出:

╔═════╗
║1.   ║
║     ║
║     ║
╚═════╝

记事本输出:

ÉÍÍÍÍÍ»
º1.   º
º     º
º     º
ÈÍÍÍÍͼ
编辑:

Ok。我现在明白我的错误了。记事本使用ANSI编码。为什么当我运行程序并将其显示到屏幕上时,它显示为"?我正在使用dev - c++来编写程序-这是否意味着我正在使用过时的编码?在c++中有什么方法可以改变我使用的字符编码吗?

你们在"扩展ASCII"中使用的方框绘图字符已经过时了。默认情况下,记事本可能使用Latin-1 (ISO-8859-1)编码,它表示一组不同的字符。

这里有一个递归的解决方案:

  • 选择上面显示正确输出的框,并将其复制到剪贴板
  • 打开记事本
  • 粘贴到记事本(它看起来是正确的)
  • 保存记事本文件(选择Unicode或UTF-8编码)并分析它以找出需要写什么才能得到输出

我相信你可以从上面猜到,要获得这些字符,你必须编写一个Unicode文本文件。

更复杂的文本编辑器(如notepad++)允许您选择编码。UTF-8将显示您期望的符号。

如果您想在编辑器中看到这些线条绘制字符,您需要选择Windows 终端字体。