Linux下关于解决JavaSwing中文乱码的情况

linux 查看字体

fc-list   #字体列表

fc-list :lang=zh  #中文字体

fc-match -v "字体名" # 查看字体详情

 


前两天在linux中运行java 老是出乱码,很苦恼,后来网上找了好多解决办法。有些可行,有些不可行,今天总结一下。

  redhed 貌似没出现乱码 本身就jdk就支持中文

  红旗linux  suse等都不支持,需要自己手工配置,解决办法:

第一种方法:

  1.从windows  C:\WINDOWS\Fonts里拿取simsun.ttc(宋体)。

  2.放到linux /usr/share/fonts/truetype中 在用fc-cache -f -v 让系统知道这个字体。

扫描二维码关注公众号,回复: 9687565 查看本文章

  3.linux中跳转到JDK安装目录 ..../jre/lib/fonts

  4.sudo mkdir fallback
     cd fallback
     sudo ln -s /usr/share/fonts/truetype/simsun.ttc
     sudo mkfontdir
     sudo mkfontscale

第二种方法:(推荐)

  1.从windows C:\WINDOWS\Fonts里拿取simsun.ttc(宋体)。

  2.linux中跳转到JDK安装目录 ..../jre/lib/fonts

  3.sudo mkdir fallback  然后将Windows所拷贝的字体放到fallback中

  4.重新 source环境变量  使其生效即可解决。

    OK了 不信可以自己试下,要是有错误的话 麻烦指出 谢谢~

 http://www.cnblogs.com/zhangyongli2011/archive/2011/07/28/2119089.html

没有试过的办法:

拷贝simsun.tcc到<JAVA_HOME>/jre/lib/fonts下

  1. Font font = new Font("宋体", Font.PLAIN, 12);  
  2. Enumeration<Object> keys = UIManager.getDefaults().keys();  
  3.         while (keys.hasMoreElements()) {  
  4.             Object key = keys.nextElement();  
  5.             if (key.toString().toLowerCase().contains(".font")) {  
  6.                 UIManager.put(key, font);  
  7.             }  
  8.         }  

 设置控件的字体为宋体

打包的问题吧,重新打包,你看打包完的jar文件当然是乱码了
1.建立MANIFEST.MF (在D:\abc目录下)
以下内容为文件内容 (只复制2行等于号之间的)
==================
Manifest-Version: 1.0
Main-Class: RoundButton
Created-By: Abc
==================

2.打包
把你的RoundButton.class复制到D:\abc目录下
然后
开始--》运行--》敲cmd打开命令行,
输入cd d:\abc 回车
输入d: 回车
输入jar cvfm abc.jar MANIFEST.MF *.* 回车

然后就能看到abc目录下有个叫abc.jar的文件,双击可以运行,jar包名字随便改,不影响

以上操作前提条件是你机器里jdk环境变量配置正确,100%可用,我已经试过

   在Linux下写swing时有时会出现乱码问题,例如在JButton上添加中文确定时,会出现两个方框,而非确定二字。本人也没深如研究此问题只是在程序运行最前面加入以下这段代码时,程序乱码问题便能解决。
Font font = new Font("宋体", Font.PLAIN, 12);
        Enumeration<Object> keys = UIManager.getDefaults().keys();
        while (keys.hasMoreElements()) {
            Object key = keys.nextElement();
            if (key.toString().toLowerCase().contains(".font")) {
                UIManager.put(key, font);
            }
        }

转自:http://blog.163.com/kimi_xia/blog/static/9035682420088163144588/

--------------------------------------------------------------------------------------------------


cd <JAVA_HOME>/lib/fonts或者cd <JAVA_HOME>/jre/lib/fonts
mkdir fallback

其中<JAVA_HOME>是你安装jdk/jre的路径,我的是/usr/lib/jdk1.5。复制或者链接一个中文字体至其下:

ln -s /usr/share/fonts/truetype/simsun.ttf /usr/lib/jdk1.5/jre/lib/fonts/fallback/simsun.ttf

转自:http://blog.itpub.net/post/1985/216742?SelectActiveLayout=a


我用的第一种方法,可以使用,我想如果是要跨平台的话,最好是指定字体

原文链接:https://blog.csdn.net/eryk86/article/details/88308029

发布了207 篇原创文章 · 获赞 13 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/lc11535/article/details/103492855