java读取中文乱码问题

MiHao2020 2014-08-26 10:08:11
同样的一段代码:
import java.io.*;
class IoOption
{
public static void main(String[] args) throws Exception
{
BufferedReader buff = new BufferedReader(new InputStreamReader(System.in,"GBK"));
String info = "中国";
byte b[] = info.getBytes("GBK");
int len = b.length;
System.out.println("info.length()="+info.length());
System.out.println("b.length="+len);
for(int i = 0;i<len;i++){
System.out.print("["+b[i]+"],");
}
System.out.println();
System.out.println("strInfo="+info);
System.out.println("info="+new String(b,"GBK"));

System.out.println("请输入信息:");
String str = buff.readLine();
byte bb[] = str.getBytes("GBK");
len = bb.length;
System.out.println("bb.length="+len);
System.out.println("读取信息长度:"+str.length());
for(int i = 0;i<len;i++){
System.out.print("["+bb[i]+"],");
}
System.out.println();
System.out.println("打印信息:"+new String(bb,"GBK"));
}
}

运行结果:

放在eclipse中,
运行结果:

我分别了eclipse和doc的运行环境:System.getProperties().list(System.out);
不同点:也找出来了
file.encoding=GBK这是DOS的
file.encoding=UTF-8这是eclipse的
是文件本身格式不一样的原因吗?还是有别的原因。
如果是文件格式的问题:请问DOS如何编译和运行eclipse保存的java文件
eclipse又如何编译运行其他编辑工具编辑的java文件
请高手指导一下,万分感谢。。
...全文
514 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
铁匠梁老师 2014-08-31
  • 打赏
  • 举报
回复
首先要统一字符集
Star-小东 2014-08-31
  • 打赏
  • 举报
回复 1
转载了一个关于java字符编码问题博客。博客地址:http://blog.csdn.net/u012779679/article/details/38945127 可能对你有帮助!
hacker_eagle 2014-08-31
  • 打赏
  • 举报
回复
同意楼上的解答,很正确奥,尝试啦
scott_129 2014-08-30
  • 打赏
  • 举报
回复
你只能改字符的编码了。不同的编码格式会造成乱码,主要原因是编码不同的字符集每个对应的字符是不同的,或者是有的根本没有那个字符,就造成乱码了。 中国人编程,没办法,谁叫这是老外设计的了
MiHao2020 2014-08-30
  • 打赏
  • 举报
回复
既要改代码,又要改配置,真麻烦。。
ln770395339 2014-08-30
  • 打赏
  • 举报
回复
楼上说的对。
A280104758 2014-08-30
  • 打赏
  • 举报
回复
同意楼上,当初乱码问题弄的我也很头疼,但是最后通过找各种资料,最后解决的
accomplish2015 2014-08-26
  • 打赏
  • 举报
回复
同意楼上的解答,很正确奥,尝试啦
qzw1210 2014-08-26
  • 打赏
  • 举报
回复

package des;

import java.io.*;
public class IoOption
{
public static void main(String[] args) throws Exception
{
BufferedReader buff = new BufferedReader(new InputStreamReader(System.in,"GBK"));
String info = "中国";
byte b[] = info.getBytes("GBK");
int len = b.length;
System.out.println("info.length()="+info.length());
System.out.println("b.length="+len);
for(int i = 0;i<len;i++){
System.out.print("["+b[i]+"],");
}
System.out.println();
System.out.println("strInfo="+info);
System.out.println("info="+new String(b,"GBK"));

System.out.println("请输入信息:");
String str = buff.readLine();
//byte bb[] = str.getBytes("GBK");
byte bb[] = str.getBytes("UTF8");
len = bb.length;
System.out.println("bb.length="+len);
System.out.println("读取信息长度:"+str.length());
for(int i = 0;i<len;i++){
System.out.print("["+bb[i]+"],");
}
System.out.println();

System.out.println("打印信息:"+new String(bb,"utf8"));
}
}



点击运行--run as -- Run Configurations

62,615

社区成员

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

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