动态网站制作指南 [  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教程 ]的信息



本月文章推荐
.Struts开发指南之J2EE n层结构.
.Servlet技术及其与CGI的比较.
.Java 进阶:分享 Struts 多模块的.
.Java Script与Java Applet的综合.
.基于JDBC的数据库连接池技术研究.
.扩展Eclipse的Java开发工具(一).
.让Java动起来的脚本语言.
.隐藏的数据炸弹可能是导致不正常.
.配置J2EE(v1.4.02)和Cloudscap.
.Enterprise JavaBeans 基础知识简.
.J2EE 应用程序开发:专业设计师的.
.struts构建文件上传(9).
.TOMCAT+JIVE的安装配置(支持中文).
.tomcat中文问题--过滤器.
.双击Jar的启动方法.
.Encoding Filter实现.
.关于在canvas类里调用textbox.
.里程碑式的革新—全新J2SE1.5新特.
.技术分享 如何实现基于J2EE的服务.
.EJB轻松进阶(3).

漫谈Java中的中文问题

发表日期:2008-1-5 |


 

摘要:关于Java应用在处理中文时所存在问题的讨论已经相当多了,与大部分的讨论不同,本文将从汉字字符的输入和输出的角度来讨论Java语言处理中文时所存在的问题。

  尽管关于Java在处理中文字符时所存在的问题的讨论已不乏其数,但由于Java技术涉及内容广(J2EE包含了十几种相关技术),技术供给商繁多,面向Java的Web服务器、应用服务器以及JDBC数据库驱动等都没有官方的标准,所以Java应用在处理中文时出了存在固有的问题外也会随着选用的服务器、驱动程序的不同产生一些与平台相关的问题。也就是说,在处理中文问题时,Java代码的可移植性打了折扣。

  总的看来,Java的中文处理问题较为集中地出现在jsp技术应用和Java的数据库访问过程中。这是因为无论是JSP应用还是基于JDBC的数据库访问都涉及到了Java程序与另外一种应用系统的交互,这种交互不可避免的要求系统之间进行数据的交互和参数的传递,而Java处理中文出现问题的地方往往就是这些数据读入和输出的地方。

  JSP程序所应该注重的中文问题

  以Tomcat 3.2.1的JSP应用为例,一般碰到中文问题可以使用如下的编码强制转换函数进行内码的转换。

public static String toChinese(String strvalue)
{
try{
if(strvalue==null)
return null;
else
{
strvalue = new String(strvalue.getBytes("ISO8859_1"), "GBK");
return strvalue;
}
}catch(Exception e){
return null;
}
}

  注重,在使用该函数前,我们需要分析中文无法正确输出的原因到底是什么,而不能将所有的中文处理的问题都用这个方法来解决。例如,假如是由于忘记将JSP的输出代码定义为GB2312或GBK而产生的中文无法正确输出就不能用这个函数来解决。一个好的习惯是在我们编写每一个JSP页面时都在文件的第一行定义程序所要输出的字符集,如

<%@ page contentType="text/Html; charset=GBK" %>或<%@ page contentType="text/html; charset=GB2312" %>

  对于一些不支持定义输出的字符集的JSP版本,我们也可以作如下的设置:

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">

  另外还需要注重的是,这个函数是用来解决那些确实出现了无法正确输出中文的代码,而不是一个通用的用来保证中文字符正确输出的函数。由于中文字符无法正确的输出或读入的原因都是因为这个字符的编码和系统缺省的字符集编码(或者是应用所要输出的字符集,二者一般情况下是相同的)的不同引起的,所以在应用该函数前我们必须确定我们所要读入或输出的字符的编码到底与系统缺省的字符集编码是否相同。
下面的例子将给出该函数的正确和错误使用的情况。例子所采用的JSP的系统为Tomcat 3.2.1,客户端和服务器端的运行环境都是中文的Windows2000。

  例1

<%@ page contentType="text/html; charset=GBK" %>

<html>

<head>

 <title>

  testJSP

 </title>

</head>

<body>

<h1>

<%

 class testChina extends Object{

  public String toChinese(String strvalue)

  {

   try{

    if(strvalue==null)

     return null;

    else

    {

     strvalue = new String(strvalue.getBytes("ISO8859_1"), "GBK");

     return strvalue;

    }

  }catch(Exception e){

   return null;

  }

 }

 public void test(){

 }

}

testChina testC = new testChina();

String str1 =new String("这是一个对中文支持的测试".getBytes("GBK"));

String str2=new String("这是一个对中文支持的测试".getBytes("GBK"),"ISO-8859-1");

String str3 =new String(testC.toChinese(str2));

out.println("Begin
");

out.println("str1");

out.println(str1+"
");

out.println("str2");

out.println(str2+"
");

out.println("str3");

out.println(str3+"
");

out.println("End
");

System.getProperties().list(System.out);

%>

</h1>


上一篇:字节码如何防止内存错误及提高代码质量 人气:726
下一篇:一个简单的自定义ClassLoader的实现 人气:353
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-9 顶级域名交易系统 v3.0 完整版
2008-7-9 ACTCMS网站管理系统 v2.0 Build
2008-7-9 Roclog v3.1.4 build 20080706
2008-7-9 乐彼网上开店系统(56770 Eshop)
2008-7-9 深度学习alexa排名提升专家 v1.0
2008-7-9 BBSXP 2008 Build 8.0.5 正式版
2008-7-9 一句话快速信息发布系统 修正完美
2008-7-9 ACTCMS网站管理系统 v2.0 Build
2008-7-9 乐涛涛留言本 08版
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 GoodCalculator2.0版固件计算器
2008-7-5 RepoName源地址搜索工具 v1.21b
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 TouchCopy多媒体管理软件 v3.13完
2008-7-5 VideosTone视频铃声 v1.1汉化破解
2008-7-5 TouchPad触摸板 v4.44破解版
2008-7-5 VideosTone破解补丁 v1.0
2008-7-5 Feeds GoogleReader客户端 v0.4.3


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報