这个是因为你对汉字的编码不了解引起的。
对于GB2312的字符(就是我们平时所说的区位),一个汉字对应于两个字节。
每个字节都是大于A0(十六进制),
倘若,你的第一个字节大于A0,而你的第二个字节小于A0,那么它应当不是汉字(仅仅对于GB2312),不知道你能否理解我说的。
如果真的发生这种情况(你的第一个字节大于A0,而你的第二个字节小于A0),那么系统找不到一个汉字与它对应,极有可能显示是两个字符(ASCII),第一个是就如你上面的?,第二个字符可能就是正常的ASCII码。
对于现在的GBK编码是要求汉字每个字节都超过80(十六进制,对应于十进制的128),当然有一些码是没有汉字对应的。
现在还有BIG5码、万国码,现在的汉字编码也复杂了。
哎。
了解就行。
使用char强制将一个十进制数转化为字符的时候,超过128的数都会显示“?”
既然是十进制数,怎么会超过128呢?
用abs() setstr() 两个函数
如:
abs(A)=32
setstr('32'=A)
应该懂了吧