tomcat HTML 中文乱码

来源:互联网 发布:ug10基础建模与编程 编辑:程序博客网 时间:2024/05/16 19:43

第一,存文件必须以一种编码存;读文件也必须以一种编码读,如不特别设置,去系统默认的编码,中文windows为GBK编码。

从.java->.class过程是,先编写.java文件并按莫种编码方式保存,然后用javac方法编译此文件,注意如.java没按系统默认编码保存则要带encoding参数指明实际编码,否则出错,生成的.class文件存为系统默认编码。

从.jsp->.java->.class,先存为某种编码的.jsp文件,然后tomcat根据pageEncoding读取并转化为servlet存为系统默认编码,然后同上面.java->.class过程。

第二,IDE的encoding为对系统下文件打开的解码方式或保存的编码方式。

特例:如果.jsp文件有<%@ page language="java" pageEncoding="UTF-8"%>,则eclipse会自动存为UTF-8方式,不管eclipse的encoding是什么,这也是eclipse的聪明之处。

第三,
pageEncoding="UTF-8"表示此文件的编码方式,必须与此文件存储方式一致(所以eclipse会首选根据它来存文件),tomcat根据这个来读此.jsp文件并编译为servlet。
contentType="text/html;charset=UTF-8"表示当浏览器得到此文件时以什么方式解码。例如:

  1. <%@ page language="java" pageEncoding="UTF-8"%> 
  2. <%@ page contentType="text/html;charset=iso8859-1"%> 
  3. <html> 
  4. <head> 
  5. <title>test</title> 
  6. </head> 
  7. <body> 
  8. 我是个好人 
  9. </body> 
  10. </html> 


会产生乱码,因为存为UTF-8的文件被解码为iso8859-1,这样 如有中文肯定出乱码。

至此,页面应为:

  1. <%@ page language="java" pageEncoding="UTF-8"%> 
  2. <%@ page contentType="text/html;charset=UTF-8"%> 
  3. <html> 
  4. <head> 
  5. <title>中文问题</title> 
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
  7. </head> 
  8. </html>

原创粉丝点击