最近我在eclipse下测试中文字符的输入输出问题,发现eclipse下控制台的编码设置为utf-8时,当从eclipse控制台录入汉字后,会出现乱码问题。
虽然这个问题看起来在实践中用量不大,但是对于理解字符编码有作用的。
场景如下:
eclipse控制台编码设置为utf-8,设置位置如图:
再来设置file.encoding的编码,目的是为了设置java程序的默认编码。
测试程序如下:
public class CharsetCodingOutTest { public static void main(String[] args) throws IOException{ System.out.println("平台使用默认编码:"+System.getProperty("file.encoding")); System.out.println(Charset.defaultCharset()); /** * 文件输入流,只要按照正确编码读取,就没有问题。 这么做的目的是为了测试后面的程序是否正确。真正需要做的是用键盘输入流代替文件输入流 */ //InputStream is=new FileInputStream("d:\\test\\test_utf8.txt"); /** * 键盘输入流 */ InputStream is=System.in; /** * 下面的编码如果没有设置对的话,就会出现解码错误,以后就可能不能恢复了。 * * 一般用ISO8859-1 和gbk来解码其它的字符编码,错误了,还可以恢复。 * 但是如果用utf-8 来解码utf-8或者用gb2312解码utf-8的字符编码,错误了,就不能恢复了。 * * 总之用错编码解码时,只要能解码对应到任何一个存在的字符时,就可以恢复。 * 如果解码时,映射不到一个字符时,就会用?代替,这样就恢复不了啊。 */ InputStreamReader isr=new InputStreamReader(is,"UTF-8");//,"UTF-8" BufferedReader br = new BufferedReader(isr); String s = br.readLine(); br.close(); //目前控制台编码是UTF-8,程序默认输出也是UTF-8,所以下面的输出应该是没有问题。除非读取的s字符串在InputStreamReader中解码错误了。 System.out.println(s); //System.out.write(s.getBytes("GBK")); //System.out.println(); //目前控制台编码是UTF-8,指定以UTF-8码输出到控制台,所以下面的输出应该是没有问题。除非读取的s字符串在InputStreamReader中解码错误了。 System.out.write(s.getBytes("UTF-8")); } }
如果是从一个utf-8的文件中读取汉字,然后输出到eclipse控制台,这个程序是没有问题的,可以正确输出汉字。
可是从eclipse的控制台下读取汉字,就会出现乱码。
所以键盘输入流的解码错误了,那么应该用什么编码进行解码读取呢。
我的思路是:
1、首先对键盘输入流读取的汉字进行解码,
2、然后jvm虚拟机会进行转换成unicode码加载到内存中,
3、jvm把unicoe转换成程序指定的编码,然后输出到控制台
4、控制台再用指定的编码进行显示。
请哪位高手指点迷津,帮我解决。
相关推荐
总的来说,"Eclipse项目的GBK编码转为UTF-8插件"是解决GBK到UTF-8编码转换问题的有效工具,它简化了开发者的工作流程,提高了代码管理的效率。对于那些经常需要处理不同编码格式项目的人来说,这样的工具无疑是非常...
Eclipse是一款广泛使用的Java集成开发环境(IDE),它在默认情况下使用GBK编码,这可能会对处理UTF-8编码的项目造成困扰。GBK是中国大陆广泛采用的一种汉字编码标准,而UTF-8是国际化的多语言字符编码,能支持世界上...
因此,通过转换器将GBK编码转换为UTF-8编码,可以确保文本在各种系统和语言环境中都能正确显示。 4. **编码转换工具的实现**: - 接收输入:用户可以通过文本框或者文件选择功能输入或导入非UTF-8编码的文本。 - ...
IDE(eclipse)设置编码格式为UTF-8IDE(eclipse)设置编码格式为UTF-8
在Eclipse中,如果你的源代码或者类文件(.class)是以GBK编码保存,而Eclipse默认配置为UTF-8,那么在打开或读取这些文件时就可能出现乱码。 解决这个问题通常需要以下步骤: 1. **设置Eclipse编码**:首先,确保...
如果发现有乱码,可能是因为文件原本就存在编码问题,或者某些特殊字符不被UTF-8支持,此时可能需要手动修正。 6. **保存设置**:为了防止后续新增或导入的文件使用默认编码,需要在Eclipse的工作空间设置中全局...
对于较老版本的MyEclipse(如MyEclipse 6.0),可以在**Preferences** > **MyEclipse** > **Files and Editors**下设置具体的文件类型(如css、dtd、html、js、jsp)的编码方式为UTF-8。 #### 四、总结 通过以上三...
本文将详细讨论如何在Eclipse中解决GBK转UTF-8乱码的问题,以及介绍一种插件工具来帮助统一编码格式。 首先,我们需要了解GBK和UTF-8编码的区别。GBK是中国大陆的标准汉字编码,它是GB2312的扩展,包含更多的汉字和...
老项目采用GBK编码格式,而新项目采用的UTF-8编码格式,如果直接把Java源代码复制到Eclipse中所有的中文信息会出现乱码。所以写了个小的方法类,将java文件的编码格式从GBK转UTF-8
2. 如果你是其他版本的IDEA,那么用压缩工具处理你的DEA安装目录下lib文件夹中的ecj-x.x.x.jar文件(名字根据IDEA版本会有所不同),将Util.class替换该jar包目录中\org\eclipse\jdt\internal\compiler\util路径下的...
2. 如果你是其他版本的IDEA,那么用压缩工具处理你的DEA安装目录下lib文件夹中的ecj-x.x.x.jar文件(名字根据IDEA版本会有所不同),将Util.class替换该jar包目录中\org\eclipse\jdt\internal\compiler\util路径下的...
本实例将引导你入门Freemarker,解决在Eclipse环境下使用Java编译时可能出现的乱码问题,并确保使用UTF-8编码方式进行处理。 **1. Freemarker简介** Freemarker是一个基于模板的开源Java库,它与Spring MVC、Struts...
开发工具 eclipse-jee-mars-2-win32开发工具 eclipse-jee-mars-2-win32开发工具 eclipse-jee-mars-2-win32开发工具 eclipse-jee-mars-2-win32开发工具 eclipse-jee-mars-2-win32开发工具 eclipse-jee-mars-2-win32...
在eclispe的项目中,有存在项目字符集和工作空间字符集不匹配,该jar只能将项目文件中的.java结尾的文件转为utf8编码,并且源文件必须为gbk编码的,否则乱码