我不能这么说,所以我只是陈述事实。
情况: 我的C ++程序将扩展的ascii字符输出到文本文件。
问题: 当我用记事本打开我的文本文件时,它会错误地显示这些字符。 (我使用的是Windows XP)
结论: 如果我不得不猜测,我会说记事本使用错误的编码保存我的文件。有没有办法解决它,所以我的程序将正确的输出保存到文本文件?
代码片段:
char box[] = {
201, 205, 187,
186, 32, 186,
200, 205, 188
};
当我outputFile << box[0]
时,我的预期结果是“╔”。相反,记事本显示“É”。
预期产出:
╔═════╗
║1. ║
║ ║
║ ║
╚═════╝
记事本输出:
ÉÍÍÍÍÍ»
º1. º
º º
º º
ÈÍÍÍÍͼ
编辑:好的。我现在明白了我的错误。记事本使用ANSI编码。为什么当我运行我的程序并将其播放到屏幕时,它显示为“╔”?我正在使用Dev-C ++编写我的程序 - 这是否意味着我使用的是过时的编码?在C ++中是否有任何方法可以改变我使用的字符的编码?
答案 0 :(得分:4)
您在“扩展ASCII”中使用方框图字符已过时。默认情况下,记事本可能正在使用Latin-1 (ISO-8859-1)编码,它代表一组不同的字符。
答案 1 :(得分:1)
这是一个'递归'解决方案:
我相信你可以从上面猜到,要获得这些字符,你必须编写一个Unicode文本文件。
答案 2 :(得分:1)
更复杂的文本编辑器(如Notepad++)可让您选择编码。 UTF-8将显示您期望的符号。
答案 3 :(得分:0)
如果要在编辑器中查看这些线条图字符,则需要选择Windows 终端字体。