Tomcat的中文處理(四):

原创 2003年03月03日 09:26:00

转载:注明http://www.csdn.net/develop/article/17/17204.shtm

Tomcat的中文處理(四)

 

 

2)在servlet和其他java文件中的字符

这种情況下,构造String使用的系統默认的编码方式的。

但是在servletrequest得到的字符,如果沒有指定request的編碼,那么就是得到的一个编码方式为iso-8859-1的字符,在servlet中,如果沒有指定response编码方式(通过setContentType),那么response使用的iso-8859-1编码方式

 

例子

import javax.servlet.*;

import javax.servlet.http.*;

 

 

public class HelloWorldExample extends HttpServlet {

 

 

    public void doGet(HttpServletRequest request,

                      HttpServletResponse response)

        throws IOException, ServletException

    {

        String name=request.getParameter("name");/////得到name參數的value

        response.setContentType("text/html ");///不設置編碼,此時response使用iso-8859-1的編碼

        PrintWriter out = response.getWriter();//得到字符流,此時的編碼為iso-8859-1

 

        out.println("<html>");

        out.println("<head>");

 

String title="你好";/////构造一个String,注意的是虽然此時没有为response指定编码,但是在servlet构造String使用的系统默认的编码的。

        out.println("<title>sdsfdsfsdfds</title>");

        out.println("</head>");

        out.println("<body bgcolor=/"white/">");

        out.println("我们大家<br>");///////输出一个编码为本地默认的Stringresponse中,但是此时response的编码是iso-8859-1的,所以出现乱码得

        out.println("title is "+title);////title系统默认的编码得到乱码

         out.println("<br>name is "+name);/////namerequest的來的,正确显示

        out.println("</body>");

        out.println("</html>");

        System.out.println("你好");////由于Console是系統默認編碼,所以正確顯示

        System.out.println("title is "+title);/////title是默認編碼的,正常顯示

        System.out.println("name is "+name);///////nameiso-8859-1的編碼的,亂碼

    }

}

如果我們在response.setContentType("text/html ");改為:response.setContentType("text/html charset=GB2312");那么,IE的输出和Console输出是一样的。

 

总结:

1.                      jsp<%@ page contentType="text/html; charset=A" %>如果指定了,那么jsp中所有构造的String(不是引用),如果沒有指定编码那么这些String编码A的。

request的得到的String如果沒有指定request编码的话,他是iso-8859-1

从别的地方得到的String是使用原來初始的编码的,比如从数据库得到String,如果数据库的编码B,那么该String编码B而不是A,也不是系统默认的

      此时,如果要输出String编码不是A,那么,很可能显示乱码的,所以首先要String正確转化为编码AString,然后输出

2.                      jsp<%@ page contentType="text/html; charset=A" %>沒有指定,那么相当于指定了<%@ page contentType="text/html; charset=ISO-8859-1" %>

3.      Servelte中如果执行了像 response.setContentType("text/html;charset=A");説明response字符输出流编码设置为A,所有要输出的String编码要转化为A的,否則会得到乱码的

       Serveletrequest得到的String编码jsp一样的但是在servlet java文件中构造的String是使用的系统默认的编码的。servelt从外部得到的String 是使用原来的编码的,比如从编码为B数据库得到的数据编码为B,不是A,也不是系统默认的编码

 

 

后语: 虽然我们使用的tomcat来作说明,其他的jsp,servlet引擎其实现的方法也差不多!

033:异常处理:你不可能总是对的2

笔记: try语句: try: 检测范围 except Exception[as reason]: 出现异常(Exception)后的处理代码 try-finally语句: ...
  • junwei0206
  • junwei0206
  • 2015年04月14日 15:40
  • 554

vim+python+OpenCV学习六 : 形态学初级

#coding=utf-8 import cv2 import numpy as np img=cv2.imread(r'test1.jpg') ''' NpKernel = np.uint8(...
  • shawncheer
  • shawncheer
  • 2016年03月05日 20:59
  • 367

傅里叶与图像处理

1、为什么要进行傅里叶变换,其物理意义是什么? 傅立叶变换是数字信号处理领域一种很重要的算法。要知道傅立叶变换算法的意义,首先要了解傅立叶原理的意义。傅立叶原理表明:任何连续测量的时序或信号,都可以...
  • J_TSoso
  • J_TSoso
  • 2014年10月28日 20:33
  • 788

django 加载静态文件

在使用Django开发的Web项目中是避免不了使用css、javascript、js等静态文件的,而对于这些静态文件的处理,django官 网这样写:Django itself doesn’t ser...
  • cpk154505
  • cpk154505
  • 2013年04月07日 14:28
  • 1644

python 中異常的處理

python异常处理 #!/usr/bin/python import traceback try:  1/0 #except Exception,e: # print traceback...
  • seegroung
  • seegroung
  • 2015年03月04日 10:47
  • 317

中文自然语言处理工具介绍

自然语言处理是人工智能领域中的一个重要方向。它研究能人机之间通讯的方式,并涉及机器对人类知识体系的学习和应用.从分词,相似度计算,情感分析,文章摘要,到学习文献,知识推理,都涉及自然语言分析.下面介绍...
  • xieyan0811
  • xieyan0811
  • 2017年03月09日 16:54
  • 2740

Kinect防抖平滑参数设置

TransformSmoothParameters smoothingParam = new TransformSmoothParameters                     {    ...
  • CSDNMicrosoftCSDN
  • CSDNMicrosoftCSDN
  • 2014年05月21日 13:05
  • 1815

卷積邊界處理(copyMakeBorder)

進行卷積處理影像時,在影像的邊界,核心沒有足夠元素納入計算,OpenCV裡用copyMakeBorder()函式將原圖稍微放大,再開始進行卷積,OpenCV在空間濾波的相關函式內部已包含copyMak...
  • Liuqz2009
  • Liuqz2009
  • 2017年03月07日 11:25
  • 100

圖像處理函數常用用法

http://blog.csdn.net/xc1499715227/article/details/41940879
  • rocky69
  • rocky69
  • 2014年12月17日 07:32
  • 749

SQL 的日期時間處理

1. SQL 的年,月,日可以經函數 Year(), Month(), Day()取得。 1.1 day(date_expression) 返回date_expression中的日期值 ...
  • jane007123
  • jane007123
  • 2013年11月23日 15:37
  • 616
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Tomcat的中文處理(四):
举报原因:
原因补充:

(最多只允许输入30个字)