其神若何,月射寒江。

java编码问题

上一篇 / 下一篇  2010-07-08 11:01:51 / 个人分类:开发技术

 

 

java中,编码问题经常会困扰我们。从概要的情况分析下。
一、通用的字符编码转换
可以把相应的字符串转换为相应的编码。
必须知道原来字符串是由什么编码的,否者就不能转成功。

jdbc,hibernate从数据库取的字符串,数据库是什么编码就是什么编码。

把原来是"ISO8859_1"编码的字符串,转换为GBK的。
byte []a=aa.getBytes("ISO8859_1");//必须指出原来的字符串的编码
String str=new String(a,"GBK");

二、编码问题的产生与解决
根源是跨越了不同的应用,或者操作系统,数据库。
但是他们直接不一定是使用的同一种编码,所以,如果要让对方
能够识别,必须进行相应的转码。转为对方能够识别的编码。

所以分析是否需要转码,必须认真分析各个应用之间的编码问题。

1)浏览器与web应用
浏览器的发送过来的字符串,有时候跟服务器是不一样的。
tomcat服务器,从资料上来,是会自动转换为iso的编码的。

如果web服务,再把数据保存到数据库,如果数据库不是iso的,
那么就必须转码。


方法如:
假如数据库要求GBK,可以在过滤器中,对请求进行指定,如
request.setCharacterEncoding("GBK");

2)从取数据库数据到应用
如果应用要求的编码跟数据库的不一致,那么应用是无法识别数据库的字符串的
可以采用通用编码的方式进行转换。

例如数据库是ios的,需要应用需要的编码是GBK的。
byte []a=aa.getBytes("ISO8859_1");
String str=new String(a,"GBK");

---------------------river .liu 2010-7-8


TAG: java

引用 删除 vicenzhang   /   2010-09-03 11:37:35
分析得好!这个编码和js里面的encodeURI 和java.net.URLEncode、URLDecoder有什么联系?
 

评分:0

我来说两句

xiaohanjiang

xiaohanjiang

River.liu又名小寒江。曾经从事多年JAVA软件开发工作,这几年一直从事软件测试工作。多年来,一直致力于软件工程、软件开发、软件测试方面的研究。不喜欢自称高手,不愿意自封资深;科学研究讲究的是务实、实践。真理、真知才是硬道理。茫茫海洋,我只希望我的每个理念能游弋于业界之间。我的思想能在你的脑海中徜徉。

日历

« 2024-04-04  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 39413
  • 日志数: 52
  • 建立时间: 2009-12-15
  • 更新时间: 2011-03-14

RSS订阅

Open Toolbar