转载 Java String编码转换

来源:互联网 发布:windows完成端口 编辑:程序博客网 时间:2024/06/10 14:09

string newstr = new string(oldstr.getbytes(), "utf-8");

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()方法设置编码方式,读出的内容就是正确的了。

转:http://www.blogjava.net/rabbit/archive/2008/03/27/189009.html

pageencoding是jsp文件本身的编码

contenttype的charset是指服务器发送给客户端时的内容编码

jsp要经过两次的“编码”,第一阶段会用pageencoding,第二阶段会用utf-8至utf-8,第三阶段就是由tomcat出来的网页, 用的是contenttype。

第一阶段是jsp编译成.java,它会根据pageencoding的设定读取jsp,结果是由指定的编码方案翻译成统一的utf-8 java源码(即.java),如果pageencoding设定错了,或没有设定,出来的就是中文乱码。

第二阶段是由javac的java源码至java bytecode的编译,不论jsp编写时候用的是什么编码方案,经过这个阶段的结果全部是utf-8的encoding的java源码。

网络上传输数据,都是以二进制流发送的吧


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
原创粉丝点击