202013
 

SQL Developer乱码原因

由于SQL Developer使用的是JDK,JAVA环境当中缺少中文字体造成了乱码。切换输入法是因为XMODIFIERS设置有问题。
XMODIFIERS实际上是指定 X图形程序的输入法。
GTK_IM_MODULE 则是指定GTK+2的程序默认所用的输入法模块。
QT_IM_MODULE 则是指定QT的程序默认所用的输入法模块.
我们在启动SQL Developer时设置好前面三个变量即可,具体设置方式参考下面:

环境

Linux系统版本:

lg@lg-PC:~$ uname -a
Linux lg-PC 3.2.0-39-generic #62-Ubuntu SMP Thu Feb 28 00:28:53 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
lg@lg-PC:~$

JDK版本:

lg@lg-PC:~$ java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)
lg@lg-PC:~$

SQL Developer版本:

Oracle SQL Developer 3.2.20.09
 Version 3.2.20.09
Build MAIN-09.87
Copyright ©  2005, 2012 Oracle.  All Rights Reserved.
IDE Version: 11.1.1.4.37.59.48
Product ID: oracle.sqldeveloper
Product Version: 11.2.0.09.87

Version
-------
Component	Version
=========	=======
Java(TM) Platform	1.7.0_09
Oracle IDE	3.2.20.09.87
Versioning Support	3.2.20.09.87

解决办法

在JDK的字体库目录里面创建一个中文字体的链接

lg@lg-PC:~$cd /usr/lib/jvm/jdk1.7.0_09/jre/lib/fonts
lg@lg-PC:/usr/lib/jvm/jdk1.7.0_09/jre/lib/fonts$mkdir fallback
lg@lg-PC:/usr/lib/jvm/jdk1.7.0_09/jre/lib/fonts$cd fallback
lg@lg-PC:/usr/lib/jvm/jdk1.7.0_09/jre/lib/fonts/fallback$ln -s /usr/share/fonts/truetype/ubuntu-font-family/UbuntuMono-R.ttf UbuntuMono-R.ttf
lg@lg-PC:/usr/lib/jvm/jdk1.7.0_09/jre/lib/fonts/fallback$ls 
UbuntuMono-R.ttf
lg@lg-PC:/usr/lib/jvm/jdk1.7.0_09/jre/lib/fonts/fallback$

创建完成后重启SQL Developer打开包含中文文件测试显示正常。据说在SQL Developer的Tools->Preferences…->Code Editor->Fonts字体设置里面可以选择系统字体也可以决绝此类问题,此法尚未尝试。

解决SQL Developer不能切换中文输入法

进入HOME目录在.bashrc文件设置输入法环境变量,如下:

lg@lg-PC:~$vim .bashrc
export XMODIFIERS=@im=ibus ;
export GTK_IM_MODULE="ibus" ;
export QT_IM_MODULE="ibus" ;

修改完成后重新打开一个Shell命令行终端,执行

lg@lg-PC:~$sh AppProgram/sd/sqldeveloper.sh

启动SQL Developer测试可以正常切换中文输入法。