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

linxu896487 2014-08-03 09:40:59

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格式的源码,就没有这个问题了。求哪位知道答案的大神解答一下,谢谢!
...全文
707 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
vnvlyp 2014-08-04
  • 打赏
  • 举报
回复
引用 12 楼 linxu896487 的回复:
[quote=引用 11 楼 vnvlyp 的回复:] 额MyEclipse。。这好像是MyEclipse的一个问题吧,我看很多“解法办法”都是改成GBK编码 你是必须要用UTF-8吗?
是的,我必须要用utf-8的,因为涉及到gbk不包含的字符啊。您有什么好的解决方法吗?[/quote] 我这里没装MyEclipse所以不好测试,你试过其他IDE/编辑器有同样的问题吗?
linxu896487 2014-08-04
  • 打赏
  • 举报
回复
引用 11 楼 vnvlyp 的回复:
额MyEclipse。。这好像是MyEclipse的一个问题吧,我看很多“解法办法”都是改成GBK编码 你是必须要用UTF-8吗?
是的,我必须要用utf-8的,因为涉及到gbk不包含的字符啊。您有什么好的解决方法吗?
vnvlyp 2014-08-03
  • 打赏
  • 举报
回复
额MyEclipse。。这好像是MyEclipse的一个问题吧,我看很多“解法办法”都是改成GBK编码 你是必须要用UTF-8吗?
简易人 2014-08-03
  • 打赏
  • 举报
回复
楼主,我都没你那个问题

简易人 2014-08-03
  • 打赏
  • 举报
回复

        Scanner sc=new Scanner(System.in);
        String next = sc.next();
        System.out.println(next);
linxu896487 2014-08-03
  • 打赏
  • 举报
回复
引用 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记得指定字符编码,不指定字符编码都是危险的做法,因为不同机器不同系统上的默认编码可能不同,就算你非常肯定就是要用默认编码,你也最好显式地指定使用默认编码,或者至少用注释醒目地说明这里使用的是什么编码

没有用啊!这样设置之后输入中文,输出之后还是乱码。[/quote]
你是什么系统?地区设置的哪里?还有默认系统编码是?
一般来说只要保证和控制台编码相同就没有问题啊[/quote]
win7 64位旗舰版中文 什么地区设置? 默认应该是GBK的。此java源文件是utf-8编码的,我在Common下面把控制台编码也设置为utf-8编码。比如说,输入”你好“,输出如图所示的乱码。我知道如果都用GBK编码,就不会出现中文乱码了。我是想用utf-8读取键盘输入也不要出现乱码啊。
vnvlyp 2014-08-03
  • 打赏
  • 举报
回复
引用 7 楼 linxu896487 的回复:
[quote=引用 2 楼 vnvlyp 的回复:]
BufferedReader input = new BufferedReader(
        new InputStreamReader(System.in, "UTF-8"));
String s = input.readLine();
System.out.println(s);
使用InputStreamReader记得指定字符编码,不指定字符编码都是危险的做法,因为不同机器不同系统上的默认编码可能不同,就算你非常肯定就是要用默认编码,你也最好显式地指定使用默认编码,或者至少用注释醒目地说明这里使用的是什么编码
没有用啊!这样设置之后输入中文,输出之后还是乱码。[/quote] 你是什么系统?地区设置的哪里?还有默认系统编码是? 一般来说只要保证和控制台编码相同就没有问题啊
linxu896487 2014-08-03
  • 打赏
  • 举报
回复
引用 2 楼 vnvlyp 的回复:
BufferedReader input = new BufferedReader(
        new InputStreamReader(System.in, "UTF-8"));
String s = input.readLine();
System.out.println(s);
使用InputStreamReader记得指定字符编码,不指定字符编码都是危险的做法,因为不同机器不同系统上的默认编码可能不同,就算你非常肯定就是要用默认编码,你也最好显式地指定使用默认编码,或者至少用注释醒目地说明这里使用的是什么编码
没有用啊!这样设置之后输入中文,输出之后还是乱码。
vnvlyp 2014-08-03
  • 打赏
  • 举报
回复
引用 4 楼 qiushi_1990 的回复:
楼上的亲,出现这种问题后该怎么解决呢?
你要设置成你自己平台的编码啊
luozhi114 2014-08-03
  • 打赏
  • 举报
回复
楼上的代码都不给看,怎么帮你解决 啊。。
编程小石头 2014-08-03
  • 打赏
  • 举报
回复
楼上的亲,出现这种问题后该怎么解决呢?
编程小石头 2014-08-03
  • 打赏
  • 举报
回复
楼上的亲,出现这种问题后该怎么解决呢?
vnvlyp 2014-08-03
  • 打赏
  • 举报
回复
BufferedReader input = new BufferedReader(
        new InputStreamReader(System.in, "UTF-8"));
String s = input.readLine();
System.out.println(s);
使用InputStreamReader记得指定字符编码,不指定字符编码都是危险的做法,因为不同机器不同系统上的默认编码可能不同,就算你非常肯定就是要用默认编码,你也最好显式地指定使用默认编码,或者至少用注释醒目地说明这里使用的是什么编码

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧