您的位置: 首页 >> 新闻中心 >> 计算机 >> 软件开发
Java编程技术中汉字问题分析及解决
精英教育阅读提示:现在 Java 编程语言已经广泛应用于互联网世界,早在 Sun 公司开发 Java 语言的时候,就已经考虑到对非英文字符的支持了。Sun 公司公布的 Java 运行环境(JRE)本身就分英文版和国际版,但只有国际版才支持非英文字符。
■ 最新课程推荐更多课程>>
学校培训课程开课时间上课地点精英价报名
正辰培训 微软软件测试工程师电话预约西直门教学区¥4704
新 科 海 软件测试工程师就业班电话预约海淀长远天地¥6280
北师大IT 软件工程与测试实战班电话预约北京师范大学¥1800
北师大IT 高级网络工程师就业班电话预约北京师范大学¥13000
金 同 方 网络工程师就业周末班电话预约人大总部¥7000


  然后系统的缺省编码方式为“8859-1”。

  2.如果在转换字符串时不采用系统缺省编码方式,而是直接采用 “GBK” 或“GB2312”,则在 A 情况下程序仍然可正常运行,在 B 情况下,系统出现错误:

UnsupportedEncodingException。

  3.在客户机上,把 JDK 的 CLASSES.ZIP 解压后,放在另一个目录中, CLASSPATH 只包含该目录。然后一边逐步删除该目录中的 .CLASS 文件,另一边运行测试程序,最后发现在一千多个 CLASS 文件中,只有一个是必不可少的,该文件是:

sun.io.CharToByteDoubleByte.class。

  将该文件拷到服务器端和其它的类放在一起,并在程序的开头 IMPORT 它,在 B 情况下程序仍然无法正常运行。

  4.在 A 情况下,如果在 CLASSPTH 中去掉 sun.io.CharToByteDoubleByte.class ,则程序运行时测得默认编码方式为“8859-1”,否则为 “GBK” 或 “GB2312” 。

  如果 JDK 的版本为1.2以上的话,在 B 情况下遇到的问题得到了很好的解决,测试的步骤同上,有兴趣的读者可以尝试一下。

  Java 中文问题的根源分析及解决

  在简体中文 MS Windows 98 + JDK 1.3 下,可以用 System.getProperties() 得到 Java 运行环境的一些基本属性,类 PoorChinese 可以帮助我们得到这些属性。

  类 PoorChinese 的源代码:

  public class PoorChinese {}

  执行 java PoorChinese 后,我们会得到:

  系统变量 file.encoding 的值为 GBK ,user.language 的值为 zh , user.region 的值为 CN ,这些系统变量的值决定了系统默认的编码方式是 GBK 。

  在上述系统中,下面的代码将 GB2312 文件转换成 Big5 文件,它们能够帮助我们理解 Java 中汉字编码的转化:

import java.io.*;
import java.util.*;
public class gb2big5
{
 static int iCharNum=0;
 public static void main(String[] args) {
  System.out.println("Input GB2312 file, output Big5 file.");
  if (args.length!=2)
  {
   System.err.println("Usage: jview gb2big5 gbfile big5file");
   System.exit(1);
   String inputString = readInput(args[0]);
   writeOutput(inputString,args[1]);
   System.out.println("Number of Characters in file: "+iCharNum+".");
  }
  static void writeOutput(String str, String strOutFile)
  {
   try
   {
    FileOutputStream fos = new FileOutputStream(strOutFile);
    Writer out = new OutputStreamWriter(fos, "Big5");
    out.write(str);
    out.close();
   }
   catch (IOException e)
   {
    e.printStackTrace();
    e.printStackTrace();
   }
  }
  static String readInput(String strInFile)
  {
   StringBuffer buffer = new StringBuffer();
   try
   {
    FileInputStream fis = new FileInputStream(strInFile);
    InputStreamReader isr = new InputStreamReader(fis, "GB2312");
    Reader in = new BufferedReader(isr);
    int ch;
    while ((ch = in.read()) > -1)
    {
     iCharNum += 1;buffer.append((char)ch);
    }
    in.close();
    return buffer.toString();
   }
   catch (IOException e)
   {
    e.printStackTrace();
    return null;
   }
  }
 }

  编码转化的过程如下:

  GB2312------------------>Unicode------------->Big5

  执行 java gb2big5 gb.txt big5.txt ,如果 gb.txt 的内容是“今天星期三”,则得到的文件 big5.txt 中的字符能够正确显示;而如果 gb.txt 的内容是“情人节快乐”,则得到的文件 big5.txt 中对应于“节”和“乐”的字符都是符号“?”(0x3F),可见 sun.io.ByteToCharGB2312 和 sun.io.CharToByteBig5 这两个基本类并没有编好。

本新闻共4页,当前在第3页  1  2  3  4

  影视动画培训   北大BEC培训官方报名网站   2008美国夏令营启航官方指定报名网站   2008留学第一站!  
  北师大 火星时代
共举影视动画培训之鼎
  北大BEC培训官方报名网站
现在报名独享95折!
  2008年国家职业资格考试
一次过关完全备考手册
  2008留学第一站
留学资讯尽在精英留学站!
 
上一篇:运用数据仓库技术分析Web日志
下一篇:Java 泛型的理解与等价实现
 相关新闻
·2006年下半年软件设计师考试答案·我从外行到专业的软件测试工程师
·软件工程师现有工作满意率仅为7.1%·软件资格和软件水平考试的业界评价
·风雨过后见彩虹 谈我的软考经历·自学通过软件设计师考试后的一些感想
·关于软件资格水平考试,我很想说几句·从软件设计师试题看软件测试七原则
·软件设计师考试必看 如何应考?·45天考过软考中级信息系统监理师心得
·软考超级Fans-五次软考心路历程·计算机软件水平考试应避免的五大失误
·通过软件设计师考试 专业能力很重要·2007年软件测试工程师需求继续增大
·从人性格看哪些人不适合做软件测试·软考三考三捷 我是怎么备考和应考的
 
◇ 重点栏目导航
◇ 精英服务承诺
教育顾问:010-51660910
QQ交流:138660910
相关资料
·软件测试新手的修炼之路
·Smarty简体中文参考手册
·Struts中文手册
·Struts快速学习指南
·ultradev动态网页制作教程
·UML工具箱
·《设计模式》中文版
·学友Flash伴侣 1.11
·阿须图像水印(AssureMark)V2.0
·超级语霸
相关试题
·2008年云南公务员考试专业试卷之科技环保
·2008年云南公务员考试试卷之教育文化类专
·2008年云南公务员考试试卷参考答案之科技
·2008年云南公务员考试试卷参考答案之教育
·2008年公务员考试科教管理类专业试卷参考
·2008年公务员考试科教管理类专业试卷(云
·2007年全国CPA考试试卷及答案解析之《会
·2007年CPA试卷及答案解析之《财务成本管
·2008年注会考前模拟试题之《财务成本管理
·2007年全国CPA《税法》考试试卷及答案解
相关热贴
·如何改QQ IP地址!
·恰当选择软件测试自动化方案
·ADO.NET学习总结
·.net操纵xml文件类(c#)
·Log4net教程
·VPN技术详解
·高手必读 网络端口安全防护技巧放送
·访问XP共享出现的问题解决办法
·Web2.0时代,RSS你会用了吗?(技术实现总
·.NET下正则表达式应用的四个示例