当前位置: 代码迷 >> J2SE >> (char)System.in.read()对于输入的汉字,为何显示为‘?’,该怎么处理
  详细解决方案

(char)System.in.read()对于输入的汉字,为何显示为‘?’,该怎么处理

热度:76   发布时间:2016-04-24 13:45:58.0
(char)System.in.read()对于输入的汉字,为何显示为‘?’
(char)System.in.read()对于输入的汉字,为何显示为‘?’
对于汉字在java中以unicode码存放,个人以为截取其中的8位再强制转换为char,可是结果总为‘?’,请指教

------解决方案--------------------
举个例子
'我 '这个字符对应的UTF-8编码是1100,1110,1101,0010
而read()这个方法只是读取输入流的下一个字节,并将其转成int返回
所以你得到的实际上是
0000,0000,0000,0000,0000,0000,1100,1110
接下来你把这个砍成char,就变成了0000,0000,1100,1110
显示出来就是 '? '
------解决方案--------------------
import java.io.*;
public class Test
{
public static void main(String [] args) throws IOException{
System.out.println( "input your value: ");
BufferedReader br =new BufferedReader (new InputStreamReader(System.in));
String s=br.readLine();
System.out.println(s);
}

}
  相关解决方案