【正确答案】
【答案解析】在Java语言中,常用的字符编码方式有ISO-8859-1、GB2312、GBK、UTF-8/UTF-16/UTF-32等。其中,ISO-8859-1用来编码拉丁文,它由单字节(0~255)组成。GB2312、GBK用来编码简体中文,由单字节和双字节混合组成,最高位为1的字节和下一个字节构成一个汉字,最高位为0的字节是ASCII码。UTF-8/UTF-16/UTF-32是国际标准UNI-CODE的编码方式,UTF的全称为Unicode Translation Format,即把Unicode转作某种格式的意思。其中,使用最多的编码方式是UTF-8,因为该方式在对拉丁文编码时节约空间,它的特点是对不同范围的字符使用不同长度的编码。
String序列化成byte数组或反序列化时需要选择正确的编码方式,如果编码方式使用不正确,就会得到乱码。所以,在Web应用开发中,经常会遇到需要指定字符串的编码格式的情况,为了防止出现乱码,最好的方法就是指定编码格式。下面的例子可以把字符串以ISO-8859-1的编码格式输出:
public String translate(String str){
String result="";
try{
result=new String(str.getBytes("ISO-8859-1"), "GBK");
result=result.trim();
}
catch(Exception e){
System.err.println(e.getMessage());
}
return result;
}
需要注意的是,在Web开发时也可以通过response.setContentType()方法来指定JSP页面显示的编码格式。
常见笔试题:
为了让浏览器以UTF-8编码显示JSP页面,请问,下列JSP代码中,正确的是______。
A.<%page contentType=
B.<meta http-equiv=
C.把所有输出内容重新编码:new String(content.getBytes())
D.response.setContentType()
答案:D。选项A设置的是服务器端编码,选项B设置的是客户端编码,选项C设置的是某个字符串的编码。只有选项D满足题意。