Redhat9下的java中文问题解决

2016-02-19 20:25 0 1 收藏

下面是个超简单的Redhat9下的java中文问题解决教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~

【 tulaoshi.com - 编程语言 】

  漂亮好看的操作系统始终不是我们的目的. 希望这篇文字能帮助至少一两个朋友从这个 Linux 的中文美化问题里面彻底解脱出来, 而真正投入到利用 Linux 为我们服务, 利用 Linux 进行开发工作的实质性事情当中.

  以下内容包括:

  1. 为 Redhat 的两个字体子系统添加字体
  2. 让 Enlightenment 显示中文
  3. Java 的中文问题:

  - JBuilder 的中文问题
  - J2SDK 的中文问题
  - J2RE 的中文问题

  大家挑自己需要的看就好了.

  为 Redhat Linux 添加新字体

  
  [注]
  以下过程在 Redhat 9.0 上测试通过.

  
  准备要安装的字体, 如: simsun.ttc, tahoma.ttf...
  根据发行注记里所言分别为核心 X 字体子系统和 fontconfig 字体子系统添加字体:

  为核心 X 字体子系统添加字体

  [注]
  以下部分应该对 Redhat 9.0 之前的版本也适用, 因为 核心 X 字体子系统存在
  于迄今为止的版本中.

  "如果你想给你的 Red Hat Linux 9 系统添加新字体,根据使用新字体的字体子系统而
  定
  ,你必须明确所需步骤。对于核心 X 字体子系统,你必须:
  1. 创建 /usr/share/fonts/local/ 目录(如果它不存在):
  mkdir /usr/share/fonts/local/"

  - 这一步没问题.

  "如果你必须要创建 /usr/share/fonts/local/,你就必须把它添加到 X 字体服务器的
  路
  径中:
  chkfontpath --add /usr/share/fonts/local/"

  - 如果是刚创建的 /usr/share/fonts/local/, 那么执行这一行命令会提示错误
  因为系统在这个目录里找不到 fonts.dir 文件, 然后就不 add.. 不过没关系,
  这一步跳过去, 在第三步之后做.

  "2. 把新字体文件复制到 /usr/share/fonts/local/ 中"

  - 照做.

  "3. 使用以下命令来更新字体信息:
  ttmkfdir -d /usr/share/fonts/local/ -o /usr/share/fonts/local/fonts.scale"

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  - 照做. 然后:
  1) 把 fonts.scale 拷贝出来一份 fonts.dir.
  2) chkfontpath --add /usr/share/fonts/local/

  "4. 使用以下命令来重新启动 xfs 字体服务器:
  service xfs reload"

  - 这一步我没成功, 因为我发现 redhat 9 里面没有 service 这个命令. 于是
  用笨办法解决: 退出 X, 再 startx.

  以上这些步骤做完之后, 所有 gtk 1.2 的程序里有关字体的部分 (如 xmms 的字体设置
  里) 都多出来我们要的新字体, 像 simsun, tahoma. 这时可以在程序内部直接使用了.
  比如我们让歌曲列表里的中文使用 simsum, 英文使用 tahoma, 可以这样做:

  1) 先在 xmms 的 Fonts 里勾上选项 "Use fontsets" - 让 xmms 支持双字节的
  中文字体;
  2) 在 播放清单 部分浏览字体, 选择使用 simsum:
  -misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r
  (不用拷这个, 选上 simsun 它自己就出来了)

  对于英文字体的要用 tahoma 就这么来, 一点小技巧:

  把这段 "-misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r" ^x 剪切下来,
  再选字体为 tahoma, 出现这个:

  -microsoft-tahoma-medium-r-normal-*-*-120-*-*-p-*-viscii1.1-1

  好了, 在后面加个逗号, 把刚才剪切的那段东东 ^v 粘贴在后面成为:

  -microsoft-tahoma-medium-r-normal-*-*-120-*-*-p-*-viscii1.1-1,
  -misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r

  这么一行, 保存一下, 于是歌曲列表就会对中文使用 simsum, 英文使用 tahoma.
  再把这行拷下面 Main Window 的字体里 (要勾上 "Use X font"), 这时 xmms 主窗
  口里的字体 (像那条来回滚动的歌曲信息的字体) 也和歌曲列表里的一样了.

  注意, 我刚才说的是程序内部, 就象 xmms 的歌曲列表一样, 而 程序本身, 即 xmms 自
  己的窗口却还是又粗又大的字体, 这时需要改 gtk 的字体设置:

  1) 用 root 账号: vi /etc/gtkrc.zh_CN
  2) 把原来的:

  fontset = "-adobe-helvetica-medium-r-normal--16-*-*-*-*-*-iso8859-1,
  -*-*-medium-r-normal--16-*-*-*-*-*-gb2312.1980-0,*-r-*"

  改成和我们上面用在 xmms 里的字体一样:

  fontset =
  "-microsoft-tahoma-medium-r-normal-*-*-120-*-*-p-*-viscii1.1-1,
  -misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r"

  3) 保存退出, 关掉 xmms 这些程序, 再重新打开, 效果就出来了! Enjoy!

  
  为 fontconfig 字体子系统添加字体

  [注]
  以下除了 "图形化地安装字体" 部分为 Rehat 9.0 独有, 其他应该在之前版本也适
  用, 大家试试.

  这部分简单多了, 看 redhat 9 发行注记:

  "把新字体添加到 fontconfig 字体子系统比较简单明了;只需把新字体复制到
  /usr/share/fonts/ 目录中即可(个体用户可以把新字体复制到 ~/.fonts/ 目录中来修
  改他们的个人字体配置)

  复制了新字体后,使用 fc-cache 来更新字体信息缓存:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  fc-cache

  (这里的 应该是 /usr/share/fonts/ 或 ~/.fonts/ 目录。)"

  - 我是按这个办法把字体拷 ~/.fonts/ 下面做成功的. (不想使用 root 用户, hh)

  "个体用户还可以图形化地安装字体。方法是:在 Nautilus 中浏览 fonts:///,然后把
  新字体文件拖放到那里。"

  - 而这个办法我失败了, 无论我用普通用户还是 root 用户, 都无法把字体文件
  拷贝或者 "拖放" 到 Nautilus 的 fonts:/// 文件夹里. 不知道原因, 只好放弃.

  按第一种方式添加成功后, 在 gtk 2 的程序里设置字体的部分都可以自由使用新字体
  比如在控制中心里把应用程序字体都改成 simsum. (另外, 我发现 10 号大小的
  simsun 效果最好, 不使用单色也非常清晰, 可以考虑使用)

  总的来说, 为 Redhat Linux 添加新字体并没有什么太难太神秘的东西, 我个人做完之
  后
  觉得并没有想像中那么难, 尤其是 gtk 1.2 程序的字体部分, 不必改别人说过的那么多
  文件,

  而实际只要添加完字体, 改个 /etc/gtkrc.zh_CN 就搞定了.

  
  让 Enlightenment 显示中文

  
  同样简单, 在上面的前提下, 找到你当前使用的 E 主题, 如我的是在

  ~/.enlightenment/themes/AquaX/

  进入这个目录后, 最简单的做法:
  gedit textclass.cfg

  利用 gedit 的替换功能, 把所有关于字体的字符串, 如:

  "-*-helvetica-bold-r-normal-*-*-120-*-*-*-*-*-*"

  统统替换成和 xmms 一样的:

  -microsoft-tahoma-medium-r-normal-*-*-120-*-*-p-*-viscii1.1-1,
  -misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r"

  保存退出, 清除 E 的缓存, Restart E, 搞定.

  
  Java 的中文显示

  
  1. JBuilder 的中文问题

  vi /etc/profile

  添加:

  JAVA_FONTS=/path/to/your/zhfonts/
  export JAVA_FONTS

  比如要用刚才弄好的 simsum 和 tahoma 字体, 因为我们已经把它们放在:
  /usr/share/fonts/local 里面了, 所以这里就可以填:

  JAVA_FONTS=/usr/share/fonts/local

  注意, JBuilder 显然用的是 fontconfig 字体子系统, 所以, 要让它认出来
  有哪些字体可以用, fonts.scale 和 fonts.dir 这两个问题无疑是必需的.
  相比较上面核心 X 字体子系统的字体文件夹里, 即我的 ~/.fonts 里面只有
  字体文件和一个叫 "fonts.cache-1" 的文件, 可以对比着理解.

  能让 JBuilder 打开的程序显示中文, 但 JBuilder 本身中文有问题, 下面:
  修改 JBuilder 自己的字体配置, 比如我的 JBuilder 装在:

  ~/Apps/Devs/JBuilder

  那么:
  vi ~/Apps/Devs/JBuilder8/jdk1.4/jre/lib/font.properties

  把这样的东西:

  serif.0=-b&h -lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1
  serif.1=--standard symbols l-medium-r-normal--*-%d-*-*-p-*-urw-fontspecific

  serif.italic.0=-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1
  serif.italic.1=--standard symbols l-medium-r-normal--*-%d-*-*-p-*-urw-fontsp
  ecific

  统统换成如:

  serif.0=-microsoft-tahoma-medium-r-normal-*-*-120-*-*-p-*-viscii1.1-1
  serif.1=-misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r

  serif.italic.0=-microsoft-tahoma-medium-r-normal-*-*-120-*-*-p-*-viscii1.1-1
  serif.italic.1=-misc-simsun-medium-r-normal-*-*-120-*-*-c-*-koi8-r

  (还是用上面 xmms 一样的字体)

  所有这些 "*.0=.." 都是描述英文该用什么字体
  而所有 "*.1=..." 都是描述中文该用什么字体

  最后保存退出, JBuilder 里的英文就都是 tahoma, 所有的中文都是 simsun
  自然, 因为已经设置了 JAVA_FONTS , 所以所有 Java 的应用程序都能正常找到
  中文字体并显示.

  最后注意一点, 我自己尝试失败的一件事:

  记得我们上面配置核心 X 字体子系统时, 在 ~/.fonts/ 里面放置了给 gtk 1.2
  程序使用的字体文件, 如果这时把 JAVA_FONTS 指向这里, 会出现的现象是:

  JBuilder 里面打开的程序可以显示中文
  但是, JBuilder 自己的窗口无法显示中文.

  我个人认为和 fontconfig 的 fonts.dir, fonts.scale 以及核心 X 的
  "fonts.cache-1" 有关系, 具体就不懂了.
  所以这里可以体验到两个字体子系统的差异.

  2. j2sdk 的中文问题:

  上面这样配置之后, 只有在 JBuilder 环境内开发程序时, 才能正常显示中文
  (因为 JBuilder 帮你找字体), 而如果我们回到命令行方式使用 j2sdk 开发,
  这时会发现还是显示不了中文, 让我们由此及彼地推想一下, jbuilder 的 jre
  里把 font.properties 修改完就能显示中文, 同样, j2sdk 下面也有自己的
  jre... 没错! 只要把我们刚才为 JBuilder 修改完的 fonts.properties 拷
  到 $JAVA_HOME/jre/lib 下面, 把它原来的覆盖, 一切 OK!

  3. j2re 的中文问题:

  还没想到测试方法, 回头再说...估计也一样, j2re 下面的 lib 里一样有
  font.properties, 所以, 应该可以再次重用 JBuilder 的 fonts.properties.
  总之呢, 这一切都基于你最初要把字体添加正确, 其它都好办了, 拷文件而已.´

来源:https://www.tulaoshi.com/n/20160219/1623635.html

延伸阅读
Java中文问题一直困扰着很多初学者,如果了解了Java系统的中文问题原理,我们就可以对中文问题能够采取根本的解决之道。 最古老的解决方案是使用String的字节码转换,这种方案问题是不方便,我们需要破坏对象封装性,进行字节码转换。 还有一种方式是对J2EE容器进行编码设置,如果J2EE应用系统脱离该容器,则会发生乱码,而且指定容器配置不...
做作vc界面的都知道,如果在遇到多个控件用tabctrl分组显示时是一件很繁琐的事情,同时代码量也特别的大下面是我今天下午刚刚想出的一个自己认为满意的解决办法。 主要思路如下: 做一个类CTabContainer,在初始化的时候确定将控件id分成几组(也就是几个tab标签),然后为每一组做一个链表分别保存每一个tab下属的控件id集。这样...
标签: Web开发
=================================== 开发java应用出现乱码是很常见的,毕竟现在unicode的使用还不是很广泛,在使用gb2312(包含了gbk简体,big5繁体)的系统中要正确实现 中文的display和数据库的存储是最基本的要求。 ============================== 1,首先developer要明确自己为什么会遇到乱码,遇到什么样的乱码...
今天遇见了这个端口被占用问题 然后各种百度 先是说 用命令 netstat -a -n -o 最后一个选项表示连接所在进程id. 找到8080端口的PID然后打开任务管理器, 切换到进程选项卡, 在菜单栏选择查看-选择列, 选择PID. 在列表中找到PID对应的进程就可以了然后发现占用端口的进程的PID为4 可无奈如何关闭都关闭不了这个进程 于是又百度了pid为4的进程 果...
------------------- Tomcat 5中文问题 author:kiss__sky@163.com ------------------- 问题描述: 1 表单提交的数据,用request.getParameter(“xxx”)返回的字符串为乱码或者?? 2 直接通过url如http://localhost/a.jsp?name=中国,这样的get请求在服务端用request. getParameter(“...

经验教程

681

收藏

62
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部