为什么这个Java程序在Eclipse上提供了错误的结果并且从终端运行时得到了正确的结果?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为什么这个Java程序在Eclipse上提供了错误的结果并且从终端运行时得到了正确的结果?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含975字,纯文字阅读大概需要2分钟。
内容图文
![为什么这个Java程序在Eclipse上提供了错误的结果并且从终端运行时得到了正确的结果?](/upload/InfoBanner/zyjiaocheng/817/e7bbc95a3d444c2eb569b9aa9efe47fc.jpg)
考虑以下程序.
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
public class HelloWorld {
public static void main(String[] args) {
System.out.println(Charset.defaultCharset());
char[] array = new char[3];
array[0] = '\u0905';
array[1] = '\u0905';
array[2] = '\u0905';
CharBuffer charBuffer = CharBuffer.wrap(array);
Charset utf8 = Charset.forName("UTF-8");
ByteBuffer encoded = utf8.encode(charBuffer);
System.out.println(new String(encoded.array()));
}
}
当我使用终端执行此操作时,
java HelloWorld
我得到了正确的编码,形状文本.默认编码是MacRoman.
现在,当我从Eclipse执行相同的代码时,我看到不正确的文本被打印到控制台.
当我将Eclipse的文件编码选项更改为UTF-8时,它会在Eclipse中打印正确的结果.
我想知道为什么会这样?理想情况下,文件编码选项不应该影响此代码,因为这里我明确使用UTF-8.
知道为什么会这样吗?
我使用的是Java 1.6(Sun JDK),Mac OSx 10.7.
解决方法:
您需要在创建字符串时指定要使用的编码:
new String(encoded.array(), charset)
否则它将使用默认的字符集.
内容总结
以上是互联网集市为您收集整理的为什么这个Java程序在Eclipse上提供了错误的结果并且从终端运行时得到了正确的结果?全部内容,希望文章能够帮你解决为什么这个Java程序在Eclipse上提供了错误的结果并且从终端运行时得到了正确的结果?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。