日期:2014-05-20  浏览次数:20907 次

(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);
}

}