UTF-8乱码

cjhuaxin 2012-07-27 11:47:00
今天用sublime编一个java小程序,默认编码是UTF-8,可是保存以后用javac编译的时候只要是中文就提示错误,然后我就试着用记事本和editplus编码,只要是用UTF-8编码的也是出错(在editplus中,utf-8和utf-8+DOM都一样),然后只要把编码改成ANSI就不会出问题了,而且错误提示上面怎么会显示GBK呢?很是纳闷,求解释!
...全文
354 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjhuaxin 2012-07-27
  • 打赏
  • 举报
回复
把代码用ANSI另存为以后,用sublime打开,中文会显示乱码,但是编译没问题,我的sublime默认编码是utf-8。

class Person{
String name;
int age;
String sex = "ÄÐ";
public Person(String name,int age){
this.name = name;
this.age = age;
}
public void info(){
System.out.println("ÐÕÃû£º"+this.name+" ÄêÁ䣺"+age+" ÐÔ±ð£º"+sex);
}
}
public class StaticDemo{
public static void main(String[] args) {
Person p1 = new Person("ÕÅÈý",20);
Person p2 = new Person("ÀîËÄ",30);
p1.info();
p2.info();

}
}
cjhuaxin 2012-07-27
  • 打赏
  • 举报
回复
为什么不行呢?要怎么做才能解决乱码。[Quote=引用 2 楼 的回复:]

如果用utf-8编码的话 ,是不行的 ,java文件开始好像多了两个字节的东西吧
[/Quote]
cjhuaxin 2012-07-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

看看你的文件编码吧
[/Quote]
class Person{
String name;
int age;
String sex = "男";
public Person(String name,int age){
this.name = name;
this.age = age;
}
public void info(){
System.out.println("姓名:"+this.name+" 年龄:"+age+" 性别:"+sex);
}
}
public class StaticDemo{
public static void main(String[] args) {
Person p1 = new Person("张三",20);
Person p2 = new Person("李四",30);
p1.info();
p2.info();

}
}
这就是源码,很简单的一段代码,没什么为题吧。
五哥 2012-07-27
  • 打赏
  • 举报
回复
如果用utf-8编码的话 ,是不行的 ,java文件开始好像多了两个字节的东西吧
VanBaston 2012-07-27
  • 打赏
  • 举报
回复
看看你的文件编码吧
cjhuaxin 2012-07-27
  • 打赏
  • 举报
回复
哈哈,还是你牛逼!!!!!,也感谢楼上的几位帮我解答,结贴啦![Quote=引用 10 楼 的回复:]
javac -encoding utf-8 test.java
[/Quote]
nickycheng 2012-07-27
  • 打赏
  • 举报
回复
javac -encoding utf-8 test.java
大鹏鸟 2012-07-27
  • 打赏
  • 举报
回复
把sublime的默认编码改成GBK或GB2312应该可以解决问题
cjhuaxin 2012-07-27
  • 打赏
  • 举报
回复
可是用记事本再打开没有乱码啊。如果是这种问题要怎么去解决呢?请指教。[Quote=引用 6 楼 的回复:]

看了你的问题,觉得应该是在cmd中用javac进行编译时,会自动用操作系统的默认编码对程序进行编译,而中文操作系统的默认编码一般都是GBK编码。你在sublime中编写程序用的是sublime的默认编码UTF-8,UTF-8编码中文字符占3个字节,GBK编码中文字符占2个字节,这样用UTF-8编写中文再用GBK解析中文时就会是乱码,楼上“把代码用ANSI另存为以后,用sublime打开,中文会显……
[/Quote]
大鹏鸟 2012-07-27
  • 打赏
  • 举报
回复
看了你的问题,觉得应该是在cmd中用javac进行编译时,会自动用操作系统的默认编码对程序进行编译,而中文操作系统的默认编码一般都是GBK编码。你在sublime中编写程序用的是sublime的默认编码UTF-8,UTF-8编码中文字符占3个字节,GBK编码中文字符占2个字节,这样用UTF-8编写中文再用GBK解析中文时就会是乱码,楼上“把代码用ANSI另存为以后,用sublime打开,中文会显示乱码”的道理也是一样的。
大鹏鸟 2012-07-27
  • 打赏
  • 举报
回复
看了你的问题,觉得应该是在cmd中用javac进行编译时,会自动用操作系统的默认编码对程序进行编译,而中文操作系统的默认编码一般都是GBK编码。你在sublime中编写程序用的是sublime的默认编码UTF-8,UTF-8编码中文字符占3个字节,GBK编码中文字符占2个字节,这样用UTF-8编写中文再用GBK解析中文时就会是乱码,楼上“把代码用ANSI另存为以后,用sublime打开,中文会显示乱码”的道理也是一样的。

62,614

社区成员

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

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