动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.Halloway:对Ruby VS Java误区的深.
.Java远程方法调用(2).
.默认构建器.
.iBatis框架batch处理优化.
.在EJB环境中实现“观察者”模式.
.最简单的Struts程序.
.J2EE、CORBA、DNA三种主流中间件.
.一个进行Base64编码的类.
.使用JBoss和PostgreSQL-快速开发.
.Java咖啡馆(4)——品味第一杯咖啡.
.length 属性 (Array).
.servlet.
.Think in java 3rd 中文版8.
.EJB 3.0 开发指南之实体Bean.
.我的ThinkinginJava学习笔记.
.struts构建文件上传(三).
.SCJP认证套题解析之十二.
.Java: JNI完全手册.
.Struts源码研究 - html-Link标签.
.Acme包中的以Post方式发送数据的.

网络应用程序支持中文的简单试验

发表日期:2008-1-5 |



  这几天有些空闲,就对网络应用(Web Application)支持中文进行了一次简单的试验,现在总结一下。由于是第一次接触,错误难免,望指正帮助。
  
  试验方法是在数据库中建立一个表格,如student表,然后建立一个网络应用程序,对该表中的数据进行查询与编辑。结构是 jsp——JavaBean——Controller——DAO,只用servlet(Jsp2.0?)技术。
  
  开发环境是Linux(平台缺省编码是UTF?8); 网络服务器TOMCAT5.0.28;数据库是PostgreSQL/mysql。
  
  整个试验的思路是,从客户端(browser)到我的应用程序,再到数据库存取,假如所有过程均采用UTF?8编码的话,数据应保持完整性,即不应出现乱码问题。
  
  首先确定数据库支持UTF?8编码。利用数据库交互程序,往建好的表中直接写入中文数据,发现一切正常(你甚至不需要规定数据库编码为UNICODE, 可能是因为我的操作系统的缺省编码是UNICODE的原故)。
  
  这样看来,出现乱码的主要原因,可能在于应用程序的编写以及客户与服务器数据传输的过程。试验证实,对于从数据库中提取数据时,要害是在有关Jsp源文件头部声明应用程序的编码:<%@ page pageEncoding="UTF-8" %>.因Tomcat5在将Jsp编译时,其使用的缺省编码并非UNICODE, 因此就有可能造成数据丢失或错误。
  
  同样,在处理来自客户端的数据输入时,在拿参数之前,也要相应设好数据编码,以避免Tomcat用其缺省的编码来对数据流进行解释。试验中采用本站网友提出的办法,即用Filter的方式对请求的数据进行编码设定。经此处理后,其他相关源代码中对参数的获取己其他处理等,不需要作任何非凡的处理。
  
  其简单源代码如下:
  
  import java.io.IOException;
  import javax.servlet.*;
  
  /**
  * a filter to set the coming request encoding to a desired charset.
  */
  public class EncodingFilter implements Filter {
  
  private static String desired_charset = "UTF-8";
  
  // gets defined encoding from web.XML
  public void init(FilterConfig conf) throws ServletException {
  desired_charset = conf.getInitParameter("charset");
  }
  
  public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
  throws IOException, ServletException {
  req.setCharacterEncoding(desired_charset);  // sets request encoding.
  chain.doFilter(req, res);
  }
  
  public void destroy() {}
  }
  
  //----------------------------------------------------------------
  //配置文件 "web.xml", showing the declaration of the above filter:
  
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
  version="2.4">
  
  <filter>
  <filter-name>Character Encoding Filter</filter-name>
  <filter-class>john.control.EncodingFilter</filter-class>
  <init-param>
  <param-name>charset</param-name>
  <param-value>UTF-8</param-value>
  </init-param>
  </filter>
  
  <filter-mapping>
  <filter-name>Character Encoding Filter</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  ......
  
  </web-app>
  
  总结如下:
  
  1:网络应用程序支持中文的主要问题在于有些服务器(servlet container)的缺省编码不是UNICODE。
  2:解决的办法是通过对服务器的配置或在应用程序源代码中,指定希望采用的编码。
  3:在应用程序源代码中指定编码,主要在Jsp源文件中包括<%@ page pageEncoding="UTF-8" %>;而处理客户端所传数据时,可利用Filter来设定所需的编码。
  4:通过统一从客户端到数据库的编码为UNICODE,如UTF?8,同一个网络应用程序可以支持多种语言。
  5:改用MySQL数据库系统后,应用程序仍然工作良好。
  
  存在问题:
  
  由于好奇,将此网络应用程序部署到WindowsXP下进行调试,数据库与服务器均不变(当然是Windows版本)。程序运行良好。但由于此WindowsXP的缺省编"CP1521”(-:something like that),而并非UTF?8, 因此,通过数据库交互程序直接对数据库进行查询,Console输出乱码(PostreSql)。
  
  最后,告诉大家今年听到的一句话:“生活会让你失去自信的”。
上一篇:mod_security保障Web Services的安全一(图) 人气:865
下一篇:关于Apache Axis2的Web service消息 人气:971
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-11-21 AutoIndex v2.2.4 多国语言版
2008-11-21 ASBLOG v2.5 bulid 081118
2008-11-21 phpwebsite v1.60
2008-11-21 DreamArticle 文章管理系统 v3.0
2008-11-21 DreamArticle 文章管理系统 v3.0
2008-11-21 Piwik ( PHP统计系统,可以和GOOG
2008-11-21 CMS001 v2.2 Beta
2008-11-21 magento开源电子商务平台 v1.1.7
2008-11-21 开良马克思影视下载插件 v1.1
2008-11-21 傲游(Maxthon) 2.1.5 正式版
2008-11-21 Skype v3.8.0.188 Final
2008-11-21 AirPlay OpenAlpha 2008.11.20
2008-11-21 屏幕文字抓取工具 DWMouse1.3.510
2008-11-21 Vista一键还原(Vista Ghost)1.
2008-11-21 SP Photo Fix照片修改1.2破解版
2008-11-21 QQ腾讯聊天工具 v1.2正式版
2008-11-21 FlightTrack航班信息v1.0破解版
2008-11-21 RealPiano仿真钢琴1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成