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

本月文章推荐
.Weblogic中使用持久缓存技术优化.
.基于Weblogic 的ejb 学习笔记(一.
.关于spring框架中的ioc的幽默解释.
.Java程序员必须了解的七大开源协.
.教您如何解决J2ME开发中的连续按.
.Java 中利用管道实现线程间的通讯.
.关于Java的一些 工具,类库,框架..
.为Java应用程序的开发而配置vi.
.JAVA编程中异常问题处理方式的区.
.JBoss3.0 下配置和部署EJB简介.
.setUTCMonth 方法.
.使用 Struts portlet 在门户应用.
.开发Eclipse插件.
.看JUnit中Metedata的巧妙应用.
.JBuilder 8新特性简介.
.Object 对象.
.java学习日记(线程).
.秉承Java思路 开发易于移植的J2M.
.精通ejb【二】.
.关于java中字符编码的一点心得,.

java中文问题

发表日期:2008-1-5 |



  写在前面的话:



Java中文问题一直是困饶着初学java的主要问题,而且即使接触java有一段时间的“老手”也经常会在java的中文问题上栽跟头。下面就我个人理解,对Java中文问题进行一些阐释。

理解Java内部关于编码的原理:



Java内部是Unicode编码,所谓Unicode编码即是:全世界所有符号进行了统一编码的结果。但是有一点值得提出一下,用它来处理汉字是合适的,但是英文却吃亏了,要用多一倍的空间来存储。所以程序员们写的程序不支持UNICODE情况很常见。

其他相关编码方式还有(说一些和中文相关的大家也许经常见到的编码方式):GB2312和GBK。其中GB2312是对GBK的升级,GBK是GB2312的一个子集,例如GB2312可以支持繁体字。BIG5是台湾编码方式。ISO8859-1编码:ISO8859_1,这个是英文系统缺省的8bit编码,因为是8bit的,所以不会把汉字的高位删去,所以用它也是可以处理汉字的。





理解Java的IO机制:



Java的IO基类分为:InputStream、OutputStream和Reader、Writer

在I/O时假如使用Reader/Writer就要发生编码转换,使用系统属性file.encoding作为编码方式。假如使用Stream就没有转换的事情了,那是Binary的数据。

1、在Reader/Writer上加encoding的选项时候,在Reader中的encoding表示把数据从encoding转换成Unicode,writer就是把Unicode的字符转换成encoding格式的。





2、用String.getByte()把字符串转换成指定编码。





jsp/Servlet问题:



JSP/Servlet的中文问题有两种解决办法:

1、 不在程序中进行编码转换,把这个工作交给浏览器,方法就是用javac ?Cencoding GBK *.java来编译所有的bean,然后在JSP页面上加
<%@ page contentType="text/Html;charset=gb2312" %>或者是在HTML中直接加: <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
到底加那个,试试就知道了。

2、 在程序中指定编码,用javac ?Cencoding ISO8859_1 *.java来编译所有的bean,在涉及到中文显示的程序上加
str=new String(str.getBytes("ISO8859_1"));

上面两种方法不能混用,意思就是要么就是GBK,要么就是ISO8859_1,从里到外都一样就好了。

另外一个好办法就是采用filter:

import javax.servlet.*;

import java.io.*;





public class RequestEncodeFilter implements Filter {





String charset = null;





public void init(FilterConfig config) throws ServletException {

charset = config.getInitParameter("charset");

if (charset == null)

charset = "GBK";

}





public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException,

ServletException {

request.setCharacterEncoding(charset);

chain.doFilter(request, response);

}





public void destroy() {





}

}





在你的web.XML配置好fillter就可以了。这个方法是最便捷的,基本可以实现让java程序员原理中文问题。





数据库JDBC的中文问题:

一般只要按照数据库指定的编码进行转换,比如按照ISO8859_1读,ISO8859_1写,一般就没什么问题了。我也碰到过一些例外情况,如:对于存储的代码不进行转码机制,在数据库中存储的是乱码。但是,读取的时候却是正常的中文。我想这正好是Unicodeà特定coding?>Unicode编码,所以凑巧碰上了吧,我想数据库内部处理过程在起作用吧,当然我们谁也不喜欢一打开数据库看到的是一堆乱码。那就还是按照自己指定的方式来进行转码解码吧。





另外一种办法是:在JDBC连接数据库过程就进行字符编码转换:

如:ConnectionString="jdbc:mysql://localhost/dbname?user=root&passWord=dphw&useUnicode=true&characterEncoding=8859_1(mysql的例子)





java和javaw:



他们的区别就不多说了,主要是java会在黑窗口下进行,而javaw不会,所以例如jb这样的开发工具都是默认采用javaw来进行run这些java的class的。

但是有一点需要提出的是:

javaw会使用与java不同的Local配置进行工作,导致了一些中文问题,而java就是好好的。JBuilder也是好好的,没有问题,调用javaw也不是它的错,难道你想每次运行或者调试的时候蹦出个DOS黑框么?

可以采用如下办法解决jb中的javaw造成的中文问题。

在JBuilder中选择Project->Project Properties->run->edit->VM Parameters,填上-Dfile.encoding=GBK -Ddefault.client.encoding=GBK -Duser.language=zh -Duser.region=CN 就行了!

原理也就是在javaw加上如上的配置参数。





其他配置方面:



在JDK低版本和UNIX下,需要改动font.properties,让JAVA VM能够找到合适的字体来显示汉字。





总结:



上面就我所接触的几个方面谈谈java的中文问题。其中包括理解Java内部关于编码的原理、理解Java的IO机制、JSP/Servlet问题、 数据库JDBC的中文问题、java和javaw、其他配置方面。

肯定会有许多疏漏的地方,希望各位给予补充。
上一篇:Java中使用DirectDraw 人气:451
下一篇:java中文乱码的解决 人气:3412
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-9-6 Movie34电影搜索引擎 v3.0
2008-9-6 wap2.0仿帝国建站喜用 v2.0
2008-9-6 免费人才招聘网 宽屏版 v3.01
2008-9-6 喜喔喔视频采集程序 v1.0 beta
2008-9-6 ASP客户管理系统
2008-9-6 主流驿站中秋祝福程序
2008-9-6 php实现msn协议的类
2008-9-5 Coppermine Photo Gallery v1.4.
2008-9-5 清松网络日记本 v2.4
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号