gpt4 book ai didi

C - fprintf 的奇怪行为

转载 作者:太空宇宙 更新时间:2023-11-04 08:47:47 25 4
gpt4 key购买 nike

我有一个项目,其中程序将一些消息保存到日志文件中。在我的程序开始时,我打开这个文件,函数将文本写入其中。因为我是巴西人,所以我们有特殊的字符,例如 ç、ã 等。

我遇到的问题是,在其中一个文件中,我有以下行:

fprintf(logfile, "\nArquivo \"Instruções.txt\" criado\n");

而且效果很好。日志文件是正确的。

同一项目的另一个文件具有以下行:

fprintf(logfile, "Carregando configurações\n");

并且日志文件中使用“ç㵔而不是“çõ”是不正确的。

重要的是要注意我没有关闭文件并同时重新打开,从头到尾都是一样的,我显示的第二行是写入文件的第一条命令。

另一点是,如果我将第一行复制到第二行的文件中,我会得到相同的奇怪符号,如果相反,也会出现同样的问题。

现在我不知道发生了什么。我试过使用 %c 和字符对应的数字(我在使用控制台时使用这种方法),但遇到了同样的问题。

非常感谢!

编辑:我不知道是否清楚,但在同一个日志文件中,既有正确的字母也有不正确的字母。它只是具有命令的项目的不同文件。

最佳答案

看起来日志文件被解释为一些旧的编码。现在,大多数东西都是用 UNICODE 编写的。在这种情况下,C 不关心你的字符串是什么格式,但由于现在大多数东西都是 UTF-8,你不太可能得到任何其他类型的字符串。

在这种情况下,我们可以判断,因为 UTF-8 转义序列在未正确解释时看起来像这样;当您错误地将其他内容解释为 UTF-8 时,例如相反,您会看到 UNICODE 替换字符。

如果您使用的是记事本并且找不到使用 UTF-8 打开文件的方法,请尝试使用其他文本编辑器。有很多 - gedit、Notepad++ 等。

此外:如果您想知道为什么它不是乱码,那是因为 UTF-8 是一种与 ASCII 兼容的编码。前 128 个字符在 UTF-8 中的分配与 ASCII 相同。许多字符集共享此属性,或者至少接近此属性。

编辑:根据进一步的问题,似乎确实发生了一些可疑的事情。不过,至少,这绝对是一些奇怪的编码问题。

关于C - fprintf 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20958000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com