天天加油 - 助您成才
Java编程技术中汉字问题的分析及解决
您正在看的Java是:Java编程技术中汉字问题的分析及解决。

  但是在一些 JSP 版本中并没有提供对输出字符集的支持,(例如 JSP 0.92),这就需要手动编码输出了,方法非常多。最常用的方法是

  String s1 = request.getParameter(“keyword”);

  String s2 = new String(s1.getBytes(“ISO-8859-1”),”GBK”);

  getBytes 方法用于将中文字符以“ISO-8859-1”编码方式转化成字节数组,而“GBK” 是目标编码方式。我们从以ISO-8859-1方式编码的数据库中读出中文字符串 s1 ,经过上述转换过程,在支持 GBK 字符集的操作系统和应用软件中就能够正确显示中文字符串 s2 。

  Java 中文问题的表层分析及处理

  背景

  开发环境JDK1.15Vcafe2.0JPadPro

  服务器端NT IISSybase SystemJconnect(JDBC)

  客户端ie5.0Pwin98

  .CLASS 文件存放在服务器端,由客户端的浏览器运行 APPLET , APPLET 只起调入 FRAME 类等主程序的作用。界面包括 Textfield ,TextArea,List,Choice 等。

  I.用 JDBC 执行 SELECT 语句从服务器端读取数据(中文)后,将数据用 APPEND 方法加到 TextArea(TA) ,不能正确显示。但加到 List 中时,大部分汉字却可正确显示。

  将数据按“ISO-8859-1” 编码方式转化为字节数组,再按系统缺省编码方式 (Default Character Encoding) 转化为 STRING ,即可在 TA 和 List 中正确显示。

  程序段如下:

  dbstr2 = results.getString(1);

  //After reading the result from DB server,converting it to string.

  dbbyte1 = dbstr2.getBytes(“iso-8859-1”);

  dbstr1 = new String(dbbyte1);

  在转换字符串时不采用系统默认编码方式,而直接采用“ GBK” 或者 “GB2312” ,在 A 和 B 两种情况下,从数据库取数据都没有问题。

  II.处理方式与“取中文”相逆,先将 SQL 语句按系统缺省编码方式转化为字节数组,再按“ISO-8859-1”编码方式转化为 STRING ,最后送去执行,则中文信息可正确写入数据库。

  程序段如下:

  SQLstmt = tf_input.getText();

  //Before sending statement to DB server,converting it to SQL statement.

  dbbyte1 = SQLstmt.getBytes();

  SQLstmt = newString(dbbyte1,”iso-8859-1”);

  _stmt = _con.createStatement();

  _stmt.executeUpdate(SQLstmt);

  ……

  问题:如果客户机上存在 CLASSPATH 指向 JDK 的 CLASSES.ZIP 时(称为 A 情况),上述程序代码可正确执行。但是如果客户机只有浏览器,而没有 JDK 和 CLASSPATH 时(称为 B 情况),则汉字无法正确转换。

  我们的分析:

  1.经过测试,在 A 情况下,程序运行时系统的缺省编码方式为 GBK 或者 GB2312 。在 B 情况下,程序启动时浏览器的 Java 控制台中出现如下错误信息:

  Can't find resource for sun.awt.Windows.awtLocalization_zh_CN

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

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

  UnsupportedEncodingException。

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

上一页  1 2 3 4 下一页

排行

  1. 红旗Linux桌面6安装图解
  2. DELPHI数据库应用程序的开发环境
  3. 学好VC++的十大良好习惯
  4. 汇编DEBUG全过程跟踪
  5. 汇编中的管道操作方法(一)
  6. 汇编中的管道操作方法(二)
  7. 汇编中的管道操作方法(三)
  8. 汇编进程控制的实现方法(一)
  9. 汇编进程控制的实现方法(二)
  10. 汇编中使用定时器的方法
  11. 汇编复杂形状的窗口实例学习
  12. 汇编图形界面的操作
  13. 汇编菜单和加速键(一)
  14. 汇编菜单和加速键(二)
  15. 汇编语言中窗口的基本知识
  16. 汇编对话框和资源文件的使用
  1. VC防止窗口和控件闪烁的方法
  2. 基于Winsock API的VC网络编程实战
  3. 用VC实现动态改变Windows的显示特
  4. VC中利用MFC设计绘图程序初步
  5. vb的属性、方法和事件(一)
  6. vb的属性、方法和事件(二)
  7. vb控件的使用
  8. vb的控件数据
  9. vb控件简介
  10. vb程序设计
  11. vb的工具栏、对话框
  12. vb菜单在应用程序中的使用
  13. vb的用户界面
  14. vb对象的使用
  15. vb的datagrid控件的使用
  16. frame的用法
  1. VC防止窗口和控件闪烁的方法
  2. 基于Winsock API的VC网络编程实战
  3. 用VC实现动态改变Windows的显示特
  4. VC中利用MFC设计绘图程序初步
  5. 学好VC++的十大良好习惯
  6. DELPHI数据库应用程序的开发环境
  7. 汇编DEBUG全过程跟踪
  8. 汇编中的管道操作方法(一)
  9. 汇编中的管道操作方法(二)
  10. 汇编中的管道操作方法(三)
  11. 汇编进程控制的实现方法(一)
  12. 汇编进程控制的实现方法(二)
  13. 汇编中使用定时器的方法
  14. 汇编复杂形状的窗口实例学习
  15. 汇编图形界面的操作
  16. 汇编菜单和加速键(一)

最近更新

  • 推荐阅读
  • Java《Java编程技术中汉字问题的分析及解决》Java编程技术中汉字问题的分析及解决
    关于我们 | 版权申明 | 广告服务 | 友情链接 | 网站地图 | 使用帮助 | ©2006-2008 TTADD.COM