今天遇到的麻烦事 ,好久没有使用servelt类了,今天偶感,就使用了,在报错之后在jsp中设置的编码形式是:<%@ page language="java" import="java.util.*" pageEncoding="GBK" contentType="text/html; charset=GBK"%> <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
在servlet中设置的是:response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
结果后台报的错误还是:xml的格式为utf-16ln , 不能转换为utf-8
我就纳闷了,我有没有使用xml格式的数据,而且每个页面到使用编码统一,没办法,就是不通过,最后把编码都去掉了,呵呵,查到数据了,汗啊。
然后,我有把每个页面的编码重新统一了,狂汗,又查到数据了。同时也查看了一些编码,如下:
charset里的问题, 一般我们都用unicode来作为统一编码, 但unicode也有多种表现形式首先, 我们说的unicode, 其实就是utf-16, 但最通用的却是utf-8,
原因: 我猜大概是英文占的比例比较大, 这样utf-8的存储优势比较明显, 因为utf-16是固定16位的(双字节), 而utf-8则是看情况而定, 即可变长度, 常规的128个ASCII只需要8位(单字节), 而汉字需要24位
UTF-16, UTF-16LE, UTF-16BE, 及其区别BOM
同样都是unicode, 为什么要搞3种这么麻烦?
先说UTF-16BE (big endian), 比较好理解的, 俗称大头
比如说char 'a', ascii为