Sybase Open Client 和 GTK+有点小冲突

安装了GIMP准备替代Photoshop进行图像处理(我也就是只用点皮毛,估计GIMP功能足够了,还没详细研究),但发现安装之后发现Sybase的SQL Advantage不能用了,Dsedit也不能用了,Dsedit提示:

Fail to initialize LIBTCL.DLL .Please make sure the SYBASE environment variable is set correctly

在网上搜索了半天,终于找到了原因:

安装GIMP的时候需要安装GTK+,而GTK+需要选择语言,见下图选择语言的窗口:

(选择里面没有美国英语,但有英国英语en_GB,可以选择了英国英语后,再修改环境变量为en_US,使用不受影响)由于我的操作系统是WinXP,所以默认的是中文环境,但GIMP中的中文却是方块,所以只能选择英语系列,在这里选择en_GB,并到环境变量中修改为en_US,GIMP使用正常了,英文字不会是小方块。

问题就产生在这里,这里选择的语言,设定保存在环境变量LANG中,也就是相当于

set LANG=en_US

恰恰巧合的是,Sybase也用到了这个环境变量,在这里查到一点说明:

When Sybase runs, it tries to load the language-specific components based on
two things. The environment language setting, and the corresponding
language component from its locales.dat file. On NT, the Sybase client may
use LANG as the environment variable, but more often, it uses LC_ALL. By
default for an english environment, it expects the value ‘enu’.

也就是说Sybase客户端程序启动的时候会检查LANG和LC_ALL这两个环境变量,并根据其内容选择相应的语言。GTK+选择英语设置的内容被Sybase使用,从而导致Sybase无法将其对应到对应的语言,进而出错。

解决方法:首先仍然保持GTK+中选择语言不变,这里我选择的是en_US,如果是选其它语言,下面的操作也类似。

编辑Sybase的语言配置文件locales.dat,找到[NT]部分,在

locale = default, us_english, iso_1

前增加一句:

locale = en_US, us_english, iso_1

这样就能骗过Sybase了,其它的使用依然使用locale = default的设定,经测试,存、取中文都正常,不受影响。只有一个小小的缺陷,就是使用SQL Advantage连接Sybase服务器时,会有个小提示:

Server Message: Number 2411, Severity 10
Line 1:
No conversions will be done.

不过再选择数据库,执行SQL什么的就没有影响了,也不会再有类似的错误提示。

One thought on “Sybase Open Client 和 GTK+有点小冲突”

Leave a Reply

Your email address will not be published. Required fields are marked *