c/c++写日志文件时文件格式问题

格利高里 2003-06-23 03:46:45
我写的一个系统中,以二进制方式建立文件,写入的日志信息含有英文、汉字。奇怪的是,文件内容的编码却总是在变化,有时候格式为gb2312的编码,有的时候却成了unicode码,而且同一个程序生成的不同的文件的格式也不一样。运行环境:redhat7.2/8.0/9.0中文 gun c++ 3.2.2/3.2.3
环境变量:LANG=en_US
读写函数:fopen fread fwrite fputs fputc等。

哪位高手对这个比较清楚?望不吝赐教。
...全文
131 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
格利高里 2003-09-19
  • 打赏
  • 举报
回复
我是用C写的呀,现在怀疑乱码的文件格式是GB18030的
nsly 2003-08-20
  • 打赏
  • 举报
回复
以前用j2ee开发的时候遇到过。
你是不是应该可以指定输出编码?
格利高里 2003-06-26
  • 打赏
  • 举报
回复
怎么没人遇到过么?
格利高里 2003-06-25
  • 打赏
  • 举报
回复
比如:“协议” 这两个字
正常的是: 4F 53 AE 8B 1A FF
乱码的是: 2D 04 E9 04 A3 00 BA 00

例子“您在”:
正常的是:A8 60 28 57
乱码的是:7A 01 5A 05


问题是,写字板、记事本怎么就显示正常的?
格利高里 2003-06-25
  • 打赏
  • 举报
回复
有意思的是,这个软件运行中生成的不同的文件,格式也是不一样的。
对于unicode码格式的文件,用ultraedit9.2打开显示乱码,但用写字板打开,可以正常显示汉字。然后将写字板中的内容,复制到ultraedit中,就可以正常显示,察看二进制,也是unicode格式,但是汉字内码和原始文件不一样。

奇!!!
umeshu 2003-06-24
  • 打赏
  • 举报
回复
对不起,偶看错了!!!!!! :-(
umeshu 2003-06-23
  • 打赏
  • 举报
回复
有个概念性的问题:

二进制文件,本无所谓其内容是英文还是汉字。因为英文或汉字这都是对二进制的不同解释,即,他们只不过是“现象”而已。 举例来说,如若你把小数3.1415写入某二进制文件,你非要那文本编辑器来看其内容,可能你看到的就是一堆杂七杂八的英文(或搀和有汉字,如若在汉字环境中)。
xueqt 2003-06-23
  • 打赏
  • 举报
回复
up

23,124

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧