有关cygwin中JAVA的中文环境编译测试(用gcj生成.exe)

 

1.用gcj 3.x环境,由于cygwin使用utf-8环境,所以输出要使用utf-8
  LANG=C.UTF-8
t.java(使用vi,UTF-8源代码)
 
public class t
{
  public static void main(String[] args) {
 try {
   System.out.println( "xx: "+new   String( "你好!中华人民共和国汉字测试 ".getBytes( "UTF-8")));
 }
 catch(Exception e) {
 }
}
}
1)编译:
   gcj-3 -c t.java
   将生成t.o文件
2)连接
  gcj-3  --main=t -o t t.o
  将生成t.exe文件
3) 运行
  ./t
  结果:
  xx: 你好!中华人民共和国汉字测试
tg.java (使用GBK编码,用ultra-edit在windows下编辑)

public class tg
{
  public static void main(String[] args) {
 try {
   System.out.println( "GBK: "+new   String( "你好!中华人民共和国汉字测试 ".getBytes( "UTF-8")));
 }
 catch(Exception e) {
 }
}
}
1)编译:
   gcj-3 -c --encoding=GBK tg.java
   将生成tg.o文件
2)连接
  gcj-3  --main=tg -o tg tg.o
  将生成t.exe文件
3) 运行
  ./tg
  结果:
  GBK: 你好!中华人民共和国汉字测试
 
当然,也可以直接用gcj-3 一次生成.exe
对于上面两个文件,分别用

 gcj-3  --main=t -o t t.java
 gcj-3  --encoding=GBK  --main=tg -o tg tg.java

可以直接生成.exe 文件 
2.使用gcj 4.x(我用4.5.3)环境,由于gcj 4.x的编译器有重大改进(其实还有很多BUG),使直接编译成.o有问题(google中搜一下),所以目前只能使用eclipse的ecj插件,但网上提供的最新ecj-4.5.jar插件经测试暂不支持cygwin的gcj,所以我使用ecj-4.3.jar或ecj-3.7.jar成功(可以在eclips官网上下载)。
 以下以ecj-4.3.jar为例,可将ecj-4.3.jar放入当前目录(其它目录也可,只是这样最方便)
  (注意,以上两个版本不支持gij-3版本)
  同样是上面的t.java
1)编译
  当前我的gij版本为4.5.3,它可用gij-4或直接用gij
  gij -jar ecj-4.3.jar -encoding utf-8 t.java
  它将生成t.class,(用其它任何encoding都无法编译)但要注意的是,该class的输出汉字不支持windows下的java(尽管我的win7_64bit+jre 1.6.0_27_64bit已支持utf-8,上面的exe输出就是utf-8的)
  若要在win7下正常输出汉字,必须改
  System.out.println( "xx: "+new   String( "你好!中华人民共和国汉字测试 ".getBytes( "UTF-8")));
  为
     System.out.println( "xx: "+new   String( "你好!中华人民共和国汉字测试 ".getBytes( "GBK")));
  或直接写
     System.out.println(  "你好!中华人民共和国汉字测试 ");
  而对于上面的tg.java,按理可用
    gij -jar ecj-4.3.jar -encoding GBK tg.java
  但编译无法通过,反而同样用
  gij -jar ecj-4.3.jar -encoding utf-8 tg.java
  或直接用
  gij -jar ecj-4.3.jar tg.java
  可以编译通过,但无论改输出的编码,在win7下都无法正确输出汉字,也就是说,要使.class正确在win7下输出汉字,源文件必须为utf-8且必须用GBK输出。
2)连接
   经多次测试,用gij-4编译生成的.class,无论输入或输出是何种代码,用gcj 4.x生成的.exe都不支持汉字,它的输出只是ascii码,所以,要正确输出汉字,暂时只能放弃gcj 4.x
   仍用 gcj-3 ,也只能用上面的t.java(即,源文件必须为utf-8,且必须用getBytes转成utf-8码输出)
   命令方式:
   gcj-3  --main=t -o t t.class
  
 
 综上所述,对于cygwin下的java,在汉字环境下,如果要生成.exe,最好使用gcj 3.x,而对于英文就无所谓了。
 面要生成.class,只能使用gij 4.x版本(其它的ecj版本未测试)
 
 由于cygwin的gcj 4.x版本网上用人很少,以上只是我个人的测试结果。
  
        

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页