java编码

由于经常遇到编码问题,经常搞的一头雾水,所以暂且做个总结.常用设置请求编码的方法:request.setCharacterEncoding()设置获得请求时的编码方式.
response.setContentType();设置输出流的编码方式.以一个字符串str被用户输入页面1,然后form提交另一个页面2,然后存入数据库为例.
1.被输入的jsp页面1影响jsp1页面的编码.如下%@ page language=java pageEncoding=UTF-8 contentType=text/html; charset=UTF-8 %pageEncoding是指这个jsp页面以什么样的编码方式保存,和用户输入的字符串的编码方式无任何关系.contentType是指out.print流的编码方式.也指form向页面2提交时编码方式.也就是说页面1以utf-8方式保存,向页面2提交时str以urf-8的方式传递的.
2.页面2%@ page language=java pageEncoding=UTF-8 contentType=text/html; charset=UTF-8%同样就是说页面2以utf-8方式保存,因为页面1设置contenType那么页面2也要以utf-8的方式读取,否则就是乱码.设置读取的字符串流的编码可以用request.setCharacterEncoding(urf-8),但是如果不设置,虚拟机会以本页面的输出编码方式,即本页面的 contentType编码方式读取获得输入流.也就说如果每个页面都设置了pageEncoding和contentType无须其他设置.从jsp1到jsp2实际上字符串转化过程如下:字符串str传递时以jsp1中contentType的编码方式转化为虚拟机内的unicode,然后又以jsp2中的contentType 的编码方式把虚拟机内的unicode编码转化为字符串,也就说不存在转错码的问题.此时再存入数据库,这就取决于数据库是以什么编码方式存的数据.我们的数据库是iso8859-1的编码方式,也就说我要 new String(str(UTF-8),ISO8859_1)这样转一下码,同理读取时也一样. 补充:iso8859-1并不支持汉字。Str.getBytes(iso-8859,gbk);这个方法以前总是产生错误的概念,此方法是指:str以8859的方式读入内存,然后以gbk的方式转化为本地码,即以gbk的方式转化为本地unicode.小窍门:当不能确定编码时,打印一个汉字的length,如果length为1则是unicode编码,如果为2则是ISO保存的GBK码,如果是3则是ISO保存的UTF-8
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值