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); }
char应当只是表示一个8位组,一个汉字可能有多个8位组
'我'这个字符对应的UTF-8编码是1100,1110,1101,0010
而read()这个方法只是读取输入流的下一个字节,并将其转成int返回
所以你得到的实际上是
0000,0000,0000,0000,0000,0000,1100,1110
接下来你把这个砍成char,就变成了0000,0000,1100,1110
显示出来就是'?'
String s=br.readLine();
System.out.println(s);
就是U+00CE
查了查是
'Î' 这东西..
<noinclude> (i-circumflex) 是罗马尼亚语和库尔德语北部方言的一个字母。这个字母在法语、瓦龙语中,也作变音字母使用。
在罗马尼亚语中,这个字母排在字母表的第 12 位,表示 /ɨ/ 音(与 â 字的发音相同)。
反正就是显示不出来,所以就用'?'替代.并不是说对应的是'?'.总比拿个空格之类的替代好吧.
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);
}
}
"'我'这个字符对应的UTF-8编码是1100,1110,1101,0010"
应该是gb2312编码,记糊涂了~