java InputStream读取乱码问题

while((num=in.read())!=-1){System.out.print((char)num);}这段代码读取到中文,输出乱码。为什么?虽然说读取的是已给字... while((num=in.read())!=-1){
System.out.print((char)num);
}
这段代码 读取到中文,输出乱码。
为什么?
虽然说读取的是已给字节,但是当它被转化成char类型时。应该也变成了char啊。
应该是可以显示的啊。。。
我觉得转化的时候就是将这个char的高位设置为0低位就是读取的那个字节。
是不是这样转化的?
我知道只读取了一半。
但是这一半也是个数字啊。
那将这个int强行的转换成char之后,
那么这个char肯定是代表一个字符了。
但是却不能显示这个字符。(char的范围是2^16)
字节也分编码 - -?
展开
 我来答
lylyhugh
2011-02-05 · 超过17用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:0
展开全部
中文字符占两个字节,一个字节8位,两个字节16位,你说的只转换了中文汉字的一半,是不是出来一个??,之所以会乱码,就是因为解码的时候把一个汉字的一部分当成一个字符解析了,所以我们处理乱码的目的就是告诉Window,这是一个汉字,请连续读两位,明白吗?
百度网友28bb8c2
2011-02-07 · TA获得超过478个赞
知道小有建树答主
回答量:316
采纳率:0%
帮助的人:262万
展开全部
原因可能就是楼上说的,不过你可以加个byte[]数组来读取。或者用其它流,比如:BufferedReader等...
中文使用unicode码,它占2 - 4个字节,一般为2字节。字符用ASCII码。可能问题就在这边吧。具体还是不清楚。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小山山001
2011-02-05 · TA获得超过1159个赞
知道小有建树答主
回答量:1246
采纳率:0%
帮助的人:1264万
展开全部
编码问题吧,读取的时候最好设置一下读取字节的编码,可能你的文件不是unicode的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式