萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

查看: 860|回复: 0

1-1-16-4-3 Q: 中文显示问题求救.

[复制链接]
发表于 2003-5-12 00:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x
发信人: KHP (Keen), 信区: Java
标  题: Re: Q: 中文显示问题求救.
发信站: BBS 水木清华站 (Sun Mar 26 04:31:10 2000)

【 在 chanyz (chan) 的大作中提到: 】
: 环境:
:         OS: Linux (mdk7.0)
:         jdk: jdk-sbb-1.2.2.RC2-3 (来自TurboLinux6.0)
: 具体情况:
: 1. test code 1:
: ---------------------------------------
: import java.awt.*;
: import java.applet.*;
: public class Applet1 extends Applet {
:     public void paint(Graphics g) {
:         g.drawString("大家好!",68,75);
:     }
: }
: ---------------------------------------
: 编译运行:
: javac Applet1.java  (还试过 -encoding iso-8859-1, or, -encoding gbk,都不行)
: appletviewer Applet1.html

用 -encoding gbk 编译出来的 class 文件是对的,你看到的是乱码应该是由于
Xwin 本身没有完全汉化。
注意一下这里汉字编码的转换过程:javac按照gbk编码方式读入你的java源文件,以
Unicode方式保存在内存中,最后按一定的编码方式(UTF-8?)把这个串输出到class
文件中。当 java 读入 class 文件执行时,该中文串在内存中的 Unicode 编码是
没有问题的,因此问题应该是 GUI 系统没有把汉字编码字符正确地显示为汉字。



  1. : 2. test code 2:
  2. : ---------------------------------------
  3. : import java.awt.*;
  4. : import java.applet.*;
  5. : public class Applet1 extends Applet {
  6. :     public void paint(Graphics g) {
  7. :         String s1="我爱你!我爱你!";
  8. :         byte b[] = s1.getBytes("GB2312");
  9. :         String s2 = new String(b,"8859_1");
  10. :         g.drawString(s2, 68,75);
  11. :     }
  12. : }
  13. : -------------------------------------------
复制代码

: 编译时出错:
: Applet1.java:8: Exception java.io.UnsupportedEncodingException must be caught,
: r it must be declared in the throws clause of this method.
: byte b[] = s1.getBytes("GB2312");
:                       ^
: 1 error
: 问题:
:         我看了BBS上的很多文章, 都说一些不说一些, 实在不懂,
: 麻烦大牛们给菜鸟指路.

try catch 语句是一定要用的,尽管你能保证编码的名称一定没写错,但由于解释器
需要在执行时根据你所给的编码名称调入一个相应的Converter类,如果这个Converter
找不到,就会产生异常。
由于在某些环境下编译时,编译器根据环境变量得到一个缺省的编码方式(非中文系统
通常会是ISO8859_1),并按此读入源程序进行编译。所以有些程序里有这样的语句:

        String s1 = new String(s0.getBytes("ISO8859_1"), "GB2312");

其实对于常数串没必要这么麻烦,只要在编译时向编译器指明编码方式就行了。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.77]
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网 |网站地图

GMT+2, 2024-6-15 00:10 , Processed in 5.083251 second(s), 17 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表