import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test {
public static void main(String[] args)throws IOException {
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String s = input.readLine();
System.out.println(s);
}
}
这是我写的一个测试程序,源文件是utf-8格式的,控制台也是utf-8格式的,我在键盘输入一个中文,输出来的就是乱码。如果用系统默认的GBK格式的源码,就没有这个问题了。求哪位知道答案的大神解答一下,谢谢!
13 个解决方案
#1
Scanner sc=new Scanner(System.in);
String next = sc.next();
System.out.println(next);
#2
BufferedReader input = new BufferedReader(
new InputStreamReader(System.in, "UTF-8"));
String s = input.readLine();
System.out.println(s);
使用InputStreamReader记得指定字符编码,不指定字符编码都是危险的做法,因为不同机器不同系统上的默认编码可能不同,就算你非常肯定就是要用默认编码,你也最好显式地指定使用默认编码,或者至少用注释醒目地说明这里使用的是什么编码
#3
楼上的亲,出现这种问题后该怎么解决呢?
#4
楼上的亲,出现这种问题后该怎么解决呢?
#5
楼上的代码都不给看,怎么帮你解决 啊。。
#6
你要设置成你自己平台的编码啊
#7
没有用啊!这样设置之后输入中文,输出之后还是乱码。
#8
你是什么系统?地区设置的哪里?还有默认系统编码是?
一般来说只要保证和控制台编码相同就没有问题啊
#9
BufferedReader input = new BufferedReader(
new InputStreamReader(System.in, "UTF-8"));
String s = input.readLine();
System.out.println(s);
使用InputStreamReader记得指定字符编码,不指定字符编码都是危险的做法,因为不同机器不同系统上的默认编码可能不同,就算你非常肯定就是要用默认编码,你也最好显式地指定使用默认编码,或者至少用注释醒目地说明这里使用的是什么编码
没有用啊!这样设置之后输入中文,输出之后还是乱码。
你是什么系统?地区设置的哪里?还有默认系统编码是?
一般来说只要保证和控制台编码相同就没有问题啊
win7 64位旗舰版中文 什么地区设置? 默认应该是GBK的。此java源文件是utf-8编码的,我在Common下面把控制台编码也设置为utf-8编码。比如说,输入”你好“,输出如图所示的乱码。我知道如果都用GBK编码,就不会出现中文乱码了。我是想用utf-8读取键盘输入也不要出现乱码啊。
#10
楼主,我都没你那个问题
#11
额MyEclipse。。这好像是MyEclipse的一个问题吧,我看很多“解法办法”都是改成GBK编码
你是必须要用UTF-8吗?
你是必须要用UTF-8吗?
#12
额MyEclipse。。这好像是MyEclipse的一个问题吧,我看很多“解法办法”都是改成GBK编码
你是必须要用UTF-8吗?
#13
是的,我必须要用utf-8的,因为涉及到gbk不包含的字符啊。您有什么好的解决方法吗?
额MyEclipse。。这好像是MyEclipse的一个问题吧,我看很多“解法办法”都是改成GBK编码
你是必须要用UTF-8吗?
我这里没装MyEclipse所以不好测试,你试过其他IDE/编辑器有同样的问题吗?
#1
Scanner sc=new Scanner(System.in);
String next = sc.next();
System.out.println(next);
#2
BufferedReader input = new BufferedReader(
new InputStreamReader(System.in, "UTF-8"));
String s = input.readLine();
System.out.println(s);
使用InputStreamReader记得指定字符编码,不指定字符编码都是危险的做法,因为不同机器不同系统上的默认编码可能不同,就算你非常肯定就是要用默认编码,你也最好显式地指定使用默认编码,或者至少用注释醒目地说明这里使用的是什么编码
#3
楼上的亲,出现这种问题后该怎么解决呢?
#4
楼上的亲,出现这种问题后该怎么解决呢?
#5
楼上的代码都不给看,怎么帮你解决 啊。。
#6
楼上的亲,出现这种问题后该怎么解决呢?
你要设置成你自己平台的编码啊
#7
BufferedReader input = new BufferedReader(
new InputStreamReader(System.in, "UTF-8"));
String s = input.readLine();
System.out.println(s);
使用InputStreamReader记得指定字符编码,不指定字符编码都是危险的做法,因为不同机器不同系统上的默认编码可能不同,就算你非常肯定就是要用默认编码,你也最好显式地指定使用默认编码,或者至少用注释醒目地说明这里使用的是什么编码
没有用啊!这样设置之后输入中文,输出之后还是乱码。
#8
BufferedReader input = new BufferedReader(
new InputStreamReader(System.in, "UTF-8"));
String s = input.readLine();
System.out.println(s);
使用InputStreamReader记得指定字符编码,不指定字符编码都是危险的做法,因为不同机器不同系统上的默认编码可能不同,就算你非常肯定就是要用默认编码,你也最好显式地指定使用默认编码,或者至少用注释醒目地说明这里使用的是什么编码
没有用啊!这样设置之后输入中文,输出之后还是乱码。
你是什么系统?地区设置的哪里?还有默认系统编码是?
一般来说只要保证和控制台编码相同就没有问题啊
#9
BufferedReader input = new BufferedReader(
new InputStreamReader(System.in, "UTF-8"));
String s = input.readLine();
System.out.println(s);
使用InputStreamReader记得指定字符编码,不指定字符编码都是危险的做法,因为不同机器不同系统上的默认编码可能不同,就算你非常肯定就是要用默认编码,你也最好显式地指定使用默认编码,或者至少用注释醒目地说明这里使用的是什么编码
没有用啊!这样设置之后输入中文,输出之后还是乱码。
你是什么系统?地区设置的哪里?还有默认系统编码是?
一般来说只要保证和控制台编码相同就没有问题啊
win7 64位旗舰版中文 什么地区设置? 默认应该是GBK的。此java源文件是utf-8编码的,我在Common下面把控制台编码也设置为utf-8编码。比如说,输入”你好“,输出如图所示的乱码。我知道如果都用GBK编码,就不会出现中文乱码了。我是想用utf-8读取键盘输入也不要出现乱码啊。
#10
楼主,我都没你那个问题
#11
额MyEclipse。。这好像是MyEclipse的一个问题吧,我看很多“解法办法”都是改成GBK编码
你是必须要用UTF-8吗?
你是必须要用UTF-8吗?
#12
额MyEclipse。。这好像是MyEclipse的一个问题吧,我看很多“解法办法”都是改成GBK编码
你是必须要用UTF-8吗?
#13
是的,我必须要用utf-8的,因为涉及到gbk不包含的字符啊。您有什么好的解决方法吗?
额MyEclipse。。这好像是MyEclipse的一个问题吧,我看很多“解法办法”都是改成GBK编码
你是必须要用UTF-8吗?
我这里没装MyEclipse所以不好测试,你试过其他IDE/编辑器有同样的问题吗?