java的字符转码;eclipse设置UTF-8

第一部分:
myeclipse如何设置utf-8

第二部分:
来源:http://www.zhihu.com/question/20361462

什么是字符编码?
来源:http://zh.wikipedia.org/wiki/%E5%AD%97%E7%AC%A6%E7%BC%96%E7%A0%81

把字符集中的字符 编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。

不同国家、不同计算机系统编码方式不同;
中国大陆:GBK (规定文件为GB13000)

Unicode(中文:万国码、国际码、统一码、单一码)是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字元编码,也是一种前缀码。它可以用来表示Unicode标准中的任何字元,且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字元的软件无须或只须做少部分修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或发送文字的应用中,优先采用的编码。

怎么做?
java中

String s = "浣犲ソ"; //这是"你好"的gbk编码的字符串
String ss = new String(s.getBytes(), "UTF-8");
System.out.println(ss);

查看API文档:

String(byte[] bytes, Charset charset) 
通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String

具体的:
来源:http://www.blogjava.net/rabbit/archive/2008/03/27/189009.html

java中的String类是按照unicode进行编码的,当使用String(byte[] bytes, String encoding)构造字符串时,encoding所指的是bytes中的数据是按照那种方式编码的,而不是最后产生的String是什么编码方式,换句话说,是让系统把bytes中的数据由encoding编码方式转换成unicode编码。如果不指明,bytes的编码方式将由jdk根据操作系统决定。

        当我们从文件中读数据时,最好使用InputStream方式,然后采用String(byte[] bytes, String encoding)指明文件的编码方式。不要使用Reader方式,因为Reader方式会自动根据jdk指明的编码方式把文件内容转换成unicode编码。

        当我们从数据库中读文本数据时,采用ResultSet.getBytes()方法取得字节数组,同样采用带编码方式的字符串构造方法即可。

ResultSet rs;
bytep[] bytes = rs.getBytes();
String str = new String(bytes, "gb2312");

不要采取下面的步骤。

ResultSet rs;
String str = rs.getString();
str = new String(str.getBytes("iso8859-1"), "gb2312");

        这种编码转换方式效率底。之所以这么做的原因是,ResultSet在getString()方法执行时,默认数据库里的数据编码方式为iso8859-1。系统会把数据依照iso8859-1的编码方式转换成unicode。使用str.getBytes("iso8859-1")把数据还原,然后利用new String(bytes, "gb2312")把数据从gb2312转换成unicode,中间多了好多步骤。

        从HttpRequest中读参数时,利用reqeust.setCharacterEncoding()方法设置编码方式,读出的内容就是正确的了。

查看charset
是什么?

16 位的 Unicode 代码单元序列和字节序列之间的指定映射关系。此类定义了用于创建解码器和编码器以及获取与 charset 关联的各种名称的方法。

如何指定开始就是UTF-8?
属性-Resource-fileEncoding

step1. 将插件com.lifesting.tool.encoding_1.0.0.jar拷贝到eclipse/plugins目录下,重启Eclipse。 step2. 选择某个项目,右键选择properties,然后点击Convert Setting进行转码规则设置,如下图: (图2 项目转码规则设置) 这个表格有四列,分别是文件后缀,文件目前编码,转换后的编码,是否转换文件内容,如果转换文件内容,那么对应的是前面所说的第二种情况,不转换文件内容对应的是第一种情况。比如图2的转码规则就是对项目的jsp文件,不管原来是什么编码,统一转为UTF-8编码,并且同时转换文件内容。可以点击右边的Add /Remove按钮来增加/删除规则。最后点击Apply来保存设置。 step3. 转码设置转码规的项目上,右键选择项目,某几个文件夹或某几个文件(当然一个也可以),然后点击Lifesting Tools->Set Encoding。插件将完成转码工作。如果我们选择的是项目,将转换整个项目;如果选择的是文件夹,转换文件夹下所有满足规则的文件;如果选择的是文件,只转换文件。 (图3 转码) 除了这方式外,我们还可以利用Eclipse的文件搜索功能,将搜到的文件进行转码,如下图: (图4 在search view里转码) 如上图所示,我们搜到了整个workspace的jsp文件,然后点击绿色E小图标,插件将会把所有满足结果的文件转码,每个文件的转换规则依赖它所属项目的转码规则设置
开源的Eclipse的文件转码插件,可以在不影响中文的情况下改变项目文件编码。 问题描述:我们项目开发都统一采用utf-8格式编码,但昨天研发部的一个产品要集成进来,他们是用gbk编码的,如果强行将文件设置utf-8肯定不行,中文全乱了。在jsp里面用 ctrl+H 进行搜索替换也不行,中文也是显示不出来的。 老的解决办法:将项目文件都设为utf-8编码,然后一个一个的文件用Ultraedit打开,粘贴到eclipse里面,在保存。这种办法最笨,最累,但没有发现其它好办法的时候,也只能干体力活了。毕竟,结果才是最重要的。 发现此插件过程:本来给研发的人说,我们要改变编码,代价太大,而且我们项目最终是要发布在aix机器上,所以还是请你们想办法和我们保持一致,毕竟研发是协助我们项目实施的。后来和经理qq上交流了一下,领导的意思是,我们最好提供解决方案,也不要让别人太痛苦(领导看问题还是更全面的, ^_^)。 突然一想,以前都是用baidu在搜索,这次用google,找资料的命中率可能更高一点。结果运气好,一次就发现解决办法了。 再次感谢此作者。 小插曲:我看完文章就想回邮件,说请参考此文章。旁边同事立刻提醒,先test一下,要不然发过去,又搞不定,那就不太好意思了。(这个情况以后要注意,如果测试不太复杂且有测试条件的话,提供给别人解决办法的同时,最好是自己试用过的) 解决过程(插件使用,转帖): step1. 将插件com.lifesting.tool.encoding_1.0.0.jar拷贝到eclipse/plugins目录下,重启Eclipse。 step2. 选择某个项目,右键选择properties,然后点击Convert Setting进行转码规则设置. 这个表格有四列,分别是文件后缀,文件目前编码,转换后的编码,是否转换文件内容,如果转换文件内容,那么对应的是前面所说的第二种情况,不转换文件内容对应的是第一种情况。比如图2的转码规则就是对项目的jsp文件,不管原来是什么编码,统一转为UTF-8编码,并且同时转换文件内容。可以点击右边的Add /Remove按钮来增加/删除规则。最后点击Apply来保存设置。 step3. 转码设置转码规的项目上,右键选择项目,某几个文件夹或某几个文件(当然一个也可以),然后点击Lifesting Tools->Set Encoding。插件将完成转码工作。如果我们选择的是项目,将转换整个项目;如果选择的是文件夹,转换文件夹下所有满足规则的文件;如果选择的是文件,只转换文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值