读书人

为什么用cprintf显示中文是乱码?解决思

发布时间: 2012-03-07 09:13:51 作者: rapoo

为什么用cprintf显示中文是乱码?
是修改别人的程序,程序很长,没法全部贴出来.

在main的开头我加上了
cprintf ("中文\n");
printf ("中文\n");
cprintf ("中文\n");
printf ("中文\n");
然后用printf显示"中文"没问题,用cprintf就显示"ÖÐÎÄ"

有人知道原因吗?

[解决办法]
printf默认以系统的字符编码显示字符串,在中文系统就是中文编码,而cprintf强制使用了某一西方字符编码显示字符串。中文两个是四个字节。西方字符集是一个字节一个字母。
[解决办法]

cprintf并没有强制用什么西方字符
面是,直接用系统字符,使用系统locale
当系统的locale是使用gb双字节,而你用的却是普通的char,这就出问题了
cprintf与printf的差别在于
cprintf直接输出在当前窗口,有时候,这个当前窗口,不一定是控制台
而printf其实更像是输出到后台窗口,如果没有被调整到文件,一般都是在控制台

读书人网 >C语言

热点推荐