关于程序编码问题

搬家后的博客链接: IT客栈 www.itkezhan.org


昨晚写了java的文本编辑器,写完发现  当我里面的内容输入 “什么” 保存了之后的,用window下面自带的编辑器打开的时候出现了乱码。但是如果输入内容是 “什么啊” 又不会出现这种错误情况。

结果今天上午写了一个同样的C程序  结果发现也会出现这种情况。


问了一下朋友


原来不同编码集有些编码是重复,就是两个编码集之间存在互相覆盖的内容。  当你的程序没有声明指定的编码集的时候,有系统通过识别你输入内容的所属范围。然后选编码集。

这样因为 “什么”这两个字的编码范围在两个不同编码集的重叠部分(例如 编码集A 与 编码集B)。这时候系统会帮我在这里面选一个编码集。  因为 “什么” 这两个字,在A编码集里面也可以编码,在B编码集里面也可以编码,这时候系统为我选了 A  编码集,但是实际上我这个内容要用 B 编码集来编码才不会出现乱码。 所以就造成了“什么”会出现乱码,其实在windows 文本编辑器一般里面有个编码方式选择,如果出现乱码选其他编码方式就可以了。  


但是为什么输入“什么啊”就不会出现乱码


因为这个时候“什么啊”系统识别后,匹配的内容只属于一个编码集B 这时候就没有 A 编码集的出现,就不会出现错误了。 因为 “什么啊”  这个“啊” 在A编码集里面找不到。


我暂时的理解就是这样。







程序:



#include<stdio.h>


int main()
{
char c[] = "什么";//如果用这句打开文件会出现乱码
//char c[] = "什么啊"  //如果用这句不会出现乱码
char g[10];
FILE *f;
f = fopen("www.c","w+");
fputs("什么",f);
fseek(f,0,SEEK_END);
fgets(g,2,f);
printf("%s",g);


return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值