编码
- ASCII码(American Standard Code for Information Interchange):ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。0x00-----0x7F
- ISO-8859-1:ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。
- Unicode:Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的数字。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。
- UTF-8: 互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-16和UTF-32,不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8是Unicode的实现方式之一。
汉字编码中现在主要用到的有三类,包括GBK,GB2312和Big5.
ASCI编码:ansi编码
为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符(所以在0x00~0x7F范围内的字节代表ascii码的字符)。比如:汉字 '中' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。
Servlet中文输出问题:只有输出内容的字符编码类型与浏览器设置的字符集编码一致时,输出的内容才能正常显示。
1 import java.io.*; 2 import java.servlet.*; 3 import java.servlet.http.*; 4 5 public class ChineseServlet extends HttpServlet{ 6 public void service (HttpServltRequest request, HttpServletResponse response) throws ServletException, IOException{ 7 8 response.setCharacterEncoding("GB2312"); 9 response.setContentType("text/html;charset=GB2312");//设置Servlet输出内容的MIME类型,对于HTTP协议来说,就是设置Content-type 10 //响应头字段的值。 11 /*Servlet引擎默认设置的输出内容类型为"text/plain",默认的字符编码类型是ISO8859-1*/ 12 PrintWriter out = response.getWriter(); 13 out.println("<s>IT咨询交流网</s>"); 14 } 15 }
在静态页面HTML中使用<meta>标签模拟响应消息头
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">

浙公网安备 33010602011771号