hhh

常用链接

统计

最新评论

关于java字符输出到界面时的问题

都知道java的字符编码方案是采用unicode的。
  比如 String test = "test 编码";
  那么"test 编码"是采用unicode编码后的二进制形式保存。
  
  然而如果要把test输出到系统边界以外的地方,那么都可能要涉及到编码转换问题,无论是文件还是网络的另一端。
  不过没关系,java提供了强大的I/O库,有Reader 和 Writer两个适配器体系,我们可以将test以我们想要的编码方案输出。
  
  但是如果将test的东西输出到界面时到有些问题了,本来从概念上界面也是系统的边界,所以unix有一切皆文件的抽象,当然如果界面是交互 性GUI时这个抽象显然是不够的,这就不论了。关键是GUI系统并没有提供类似javaI/O的这种能力,java也没有直接以unicode形式输出给 GUI系统,而是好像会把内存中变量字符再通过系统默认语言(字符集)编码去转换,然后扔给绘图系统吧!
  
  这样的话如果 JLable label = new JLabel(test);
  那么这个label的显示在简体中文版的OS上没问题,但如果在繁体中文版的OS可能就有问题了。
  
  按理说swing是独立于本地OS的GUI系统,但是他还是建立在java2D上,而java2D还是要利用本地的绘图系统,像渲染文字这种绘图是不是java2D还是利用了本地绘图系统呢!


java GUI “?” “口” 这两个我都碰到过。
  
  如果某中编码方案里没有这个文字,java会用" ?"这个代替。
  
  如果某种文字没有相应的字体,java会用"口"代替。
  
  java在输出到系统界面时会把内存中变量字符再通过系统默认语言(字符集)编码去转换!
  
  我觉得如果java自己实现所有unicode支持的文字的绘图(基于更低级的图形API),那么他没有必要转,因为unicode字符给java图形系统,他都能把它表现出来,当然java图形系统基于OS的更低级的图形API。
  
  是不是java自己实现所有unicode支持的文字的绘图这项任务比比较困难。
  
  如果java能做到这样真的很强大啊!
  
  这样的话JLable label = new JLabel(test); 无论在什么语言版的OS 都OK。

posted on 2006-10-17 17:46 hhh 阅读(1039) 评论(1)  编辑  收藏

评论

# re: 关于java字符输出到界面时的问题 2006-10-18 14:26 123bingbing

增开7群,号码 30440732
8群 30756649
9群 30178567
10群 28694497

我们的qq群:15096318 学习程序的都可以来  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: