java文件保存为utf-8格式,标准输入乱码问题。

时间:2023-01-05 14:34:54
 

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


java文件保存为utf-8格式,标准输入乱码问题。
楼上的亲,出现这种问题后该怎么解决呢?

#4


楼上的亲,出现这种问题后该怎么解决呢?
java文件保存为utf-8格式,标准输入乱码问题。

#5


楼上的代码都不给看,怎么帮你解决 啊。。

#6


引用 4 楼 qiushi_1990 的回复:
楼上的亲,出现这种问题后该怎么解决呢?
java文件保存为utf-8格式,标准输入乱码问题。

你要设置成你自己平台的编码啊

#7


引用 2 楼 vnvlyp 的回复:
BufferedReader input = new BufferedReader(
        new InputStreamReader(System.in, "UTF-8"));
String s = input.readLine();
System.out.println(s);

使用InputStreamReader记得指定字符编码,不指定字符编码都是危险的做法,因为不同机器不同系统上的默认编码可能不同,就算你非常肯定就是要用默认编码,你也最好显式地指定使用默认编码,或者至少用注释醒目地说明这里使用的是什么编码

没有用啊!这样设置之后输入中文,输出之后还是乱码。

#8


引用 7 楼 linxu896487 的回复:
Quote: 引用 2 楼 vnvlyp 的回复:

BufferedReader input = new BufferedReader(
        new InputStreamReader(System.in, "UTF-8"));
String s = input.readLine();
System.out.println(s);

使用InputStreamReader记得指定字符编码,不指定字符编码都是危险的做法,因为不同机器不同系统上的默认编码可能不同,就算你非常肯定就是要用默认编码,你也最好显式地指定使用默认编码,或者至少用注释醒目地说明这里使用的是什么编码

没有用啊!这样设置之后输入中文,输出之后还是乱码。

你是什么系统?地区设置的哪里?还有默认系统编码是?
一般来说只要保证和控制台编码相同就没有问题啊

#9


java文件保存为utf-8格式,标准输入乱码问题。
引用 8 楼 vnvlyp 的回复:
Quote: 引用 7 楼 linxu896487 的回复:

Quote: 引用 2 楼 vnvlyp 的回复:

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


楼主,我都没你那个问题
java文件保存为utf-8格式,标准输入乱码问题。

#11


额MyEclipse。。这好像是MyEclipse的一个问题吧,我看很多“解法办法”都是改成GBK编码
你是必须要用UTF-8吗?

#12


引用 11 楼 vnvlyp 的回复:
额MyEclipse。。这好像是MyEclipse的一个问题吧,我看很多“解法办法”都是改成GBK编码
你是必须要用UTF-8吗?
是的,我必须要用utf-8的,因为涉及到gbk不包含的字符啊。您有什么好的解决方法吗?

#13


引用 12 楼 linxu896487 的回复:
Quote: 引用 11 楼 vnvlyp 的回复:

额MyEclipse。。这好像是MyEclipse的一个问题吧,我看很多“解法办法”都是改成GBK编码
你是必须要用UTF-8吗?
是的,我必须要用utf-8的,因为涉及到gbk不包含的字符啊。您有什么好的解决方法吗?

我这里没装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


java文件保存为utf-8格式,标准输入乱码问题。
楼上的亲,出现这种问题后该怎么解决呢?

#4


楼上的亲,出现这种问题后该怎么解决呢?
java文件保存为utf-8格式,标准输入乱码问题。

#5


楼上的代码都不给看,怎么帮你解决 啊。。

#6


引用 4 楼 qiushi_1990 的回复:
楼上的亲,出现这种问题后该怎么解决呢?
java文件保存为utf-8格式,标准输入乱码问题。

你要设置成你自己平台的编码啊

#7


引用 2 楼 vnvlyp 的回复:
BufferedReader input = new BufferedReader(
        new InputStreamReader(System.in, "UTF-8"));
String s = input.readLine();
System.out.println(s);

使用InputStreamReader记得指定字符编码,不指定字符编码都是危险的做法,因为不同机器不同系统上的默认编码可能不同,就算你非常肯定就是要用默认编码,你也最好显式地指定使用默认编码,或者至少用注释醒目地说明这里使用的是什么编码

没有用啊!这样设置之后输入中文,输出之后还是乱码。

#8


引用 7 楼 linxu896487 的回复:
Quote: 引用 2 楼 vnvlyp 的回复:

BufferedReader input = new BufferedReader(
        new InputStreamReader(System.in, "UTF-8"));
String s = input.readLine();
System.out.println(s);

使用InputStreamReader记得指定字符编码,不指定字符编码都是危险的做法,因为不同机器不同系统上的默认编码可能不同,就算你非常肯定就是要用默认编码,你也最好显式地指定使用默认编码,或者至少用注释醒目地说明这里使用的是什么编码

没有用啊!这样设置之后输入中文,输出之后还是乱码。

你是什么系统?地区设置的哪里?还有默认系统编码是?
一般来说只要保证和控制台编码相同就没有问题啊

#9


java文件保存为utf-8格式,标准输入乱码问题。
引用 8 楼 vnvlyp 的回复:
Quote: 引用 7 楼 linxu896487 的回复:

Quote: 引用 2 楼 vnvlyp 的回复:

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


楼主,我都没你那个问题
java文件保存为utf-8格式,标准输入乱码问题。

#11


额MyEclipse。。这好像是MyEclipse的一个问题吧,我看很多“解法办法”都是改成GBK编码
你是必须要用UTF-8吗?

#12


引用 11 楼 vnvlyp 的回复:
额MyEclipse。。这好像是MyEclipse的一个问题吧,我看很多“解法办法”都是改成GBK编码
你是必须要用UTF-8吗?
是的,我必须要用utf-8的,因为涉及到gbk不包含的字符啊。您有什么好的解决方法吗?

#13


引用 12 楼 linxu896487 的回复:
Quote: 引用 11 楼 vnvlyp 的回复:

额MyEclipse。。这好像是MyEclipse的一个问题吧,我看很多“解法办法”都是改成GBK编码
你是必须要用UTF-8吗?
是的,我必须要用utf-8的,因为涉及到gbk不包含的字符啊。您有什么好的解决方法吗?

我这里没装MyEclipse所以不好测试,你试过其他IDE/编辑器有同样的问题吗?