作者: forever steel(zhoun)
原发: http://guo9310.blog.163.com/
一. Slackware-current中scim输入法问题
Slackware-current中引入了scim作为默认输入法, 我原来一直使用fcitx,
所以并没有装scim*的几个包.
我前几天更新了gtk2+之后, 发现使用gvim的时候, 总是提示说找不到scim的一些库,
我就把scim装上了, 装上之后感觉还是不太稳定, 有很多问题的.
我的locale设置是zh_CN.GBK, scim 跟一些程序有冲突, 如wine, pidgin等.
1. wine中根本无法输入中文,
2. pidgin中经常会出现输入法候选字不显示问题,
3. vim中, 输入"mingf"这个词, 就出现一长串乱码
二. 修改locale, 从zh_CN.GBK改成zh_CN.UTF-8
scim推荐使用UTF-8, 我把locale改成zh_CN.UTF-8
1. wine中, 用fcitx输入中文
.profile中, 加入这两行:
unset QT_IM_MODULE unset XIM_PROGRAM
2. pidgin中, locale改之后没有试过, 有时间再试试看
3. vim的那个问题就好了, 没有这个一长串乱码问题了
改locale的步骤
1. 在.profile中
export LANG=zh_CN.UTF-8 export XMODIFIERS="@im=fcitx" export G_FILENAME_ENCODING="@locale"
2. 这个改locale还是没有那么简单的, 还有两个麻烦的地方
一是中文文件名, 二是gbk编码的文本文件
中文文件名可以用工具转换, 好像Magic Linux的wiki上也给出了一个方案, 用convmv处理一下
下面说说我的做法, 就是用ntfs分区做了一个编码转换:
1) 未换locale之前, locale=zh_CN.GBK的时候, 把ntfs的分区用 locale=zh_CN.GBK挂载
mount -t ntfs-3g -o locale=zh_CN.GBK /dev/sda3 /mnt/e
2) 把ext3上包含中文文件名的目录用cp -pR复制或者用rsync同步到ntfs分区
3) umount ntfs分区
4) 修改.profile, locale=zh_CN.UTF-8, 重新登录
5) 把ntfs的分区用 locale=zh_CN.UTF-8挂载
mount -t ntfs-3g -o locale=zh_CN.UTF-8 /dev/sda3 /mnt/e
6) 把ntfs分区上刚才备份的那些包含中文文件名的目录, 再复制或者同步回来就好了
3. 对于内容为gbk编码的文本文件, 可以用iconv转换一下就可以了
我这里这种文件不多, 写了一个脚本来处理
#!/bin/bash #iconv_all convert the files from gbk to utf8 #usage: iconv_all *.txt for f in $@ do if [ -f $f ] then mv "$f" "$f.bak1" iconv -c -f gbk -t utf8 < "$f.bak1" > "$f" rm "$f.bak1" fi done exit 0
三. Linux下面的电骡软件
1. mldonkey
很方便, 有一个服务器,客户端, Web UI, 可以远程登录, 支持telnet, http等, 很强悍,
试了一下web页面, 非常方便, 配置之类的也一目了然, 没有乱码问题
支持多种协议
感觉不爽的一点是edonkey模块不支持upnp, 只有bt模块支持,
造成edonkey只能得到lowid, 获取不到highid, 只能通过在无线路由器上设置端口映射来解决,
如果你使用随机端口, 每次设置太麻烦.
2. aMule
跟eMule界面和功能很象, 我自己比较习惯
而且aMule支持upnp功能, 可以不用设置端口映射就得到highid, 方便.
根据aMule wiki上的说明, 把我eMule里面的一些数据导入到aMule中,
其实我就是看看两个config目录, 有哪些文件名一样, 直接复制过来覆盖一下
四. aMule乱码问题
这次改locale=zh_CN.UTF-8, 也是因为想使用aMule,
但这个aMule的搜索出来的文件名, 和下载的文件名都是乱码
搜索出来的文件名乱码, 把locale=zh_CN.UTF-8, 就好了,
但是那个下载的文件名乱码问题, 设置locale也没有用.
http://shuizhuyuanluo.blog.163.com/b...0711104826621/
有位nihui大侠写了一个patch, 打了这个patch就好了, (这个patch应该提交给aMule开发组 )
我从Magic Linux的apt源中, 找到了aMule的源代码rpm包, 解压之后找到了这个patch
amule-cvs-convfilenames-gb18030.patch
下载了aMule的0205的svn版本, 打上补丁之后, 重新安装就没有问题了.
新加入的文件名都是对的了, 在patch安装之前的老的那些文件名,
如果是未下完文件, 可以通过传输文件->右键点击->文件信息,然后把正确的中文文件名填入
如果是已经下载完成文件, 可以通过共享文件 -> 右键点击 ->更名 来修改
下面就是那个patch文件, 感谢Magic Linux的nihui大侠提供了这个patch
diff -u -r amule-cvs/src/libs/common/Path.cpp amule-cvs.new/src/libs/common/Path.cpp --- amule-cvs/src/libs/common/Path.cpp 2008-02-01 03:55:31.000000000 +0800 +++ amule-cvs.new/src/libs/common/Path.cpp 2008-02-05 22:38:09.000000000 +0800 @@ -176,7 +176,7 @@ // Try to unmangle the filename for printing. m_printable = wxConvUTF8.cMB2WC(fn); if (!m_printable) { - m_printable = wxConvISO8859_1.cMB2WC(fn); + m_printable = wxConvLocal.cMB2WC(fn); } wxASSERT(IsOk()); diff -u -r amule-cvs/src/SafeFile.cpp amule-cvs.new/src/SafeFile.cpp --- amule-cvs/src/SafeFile.cpp 2008-01-28 04:32:36.000000000 +0800 +++ amule-cvs.new/src/SafeFile.cpp 2008-02-05 22:39:02.000000000 +0800 @@ -241,11 +241,11 @@ str = UTF82unicode(val); if (str.IsEmpty()) { // Fallback to Latin-1 - str = wxString(val, wxConvISO8859_1, raw_len); + str = wxString(val, wxConvLocal, raw_len); } } else { // Raw strings are written as Latin-1 (see CFileDataIO::WriteStringCore) - str = wxString(val, wxConvISO8859_1, raw_len); + str = wxString(val, wxConvLocal, raw_len); } return str; @@ -323,7 +323,7 @@ } default: { // Raw strings are saved as Latin-1 - wxCharBuffer s1 = wxConvISO8859_1.cWC2MB(str); + wxCharBuffer s1 = wxConvLocal.cWC2MB(str); WriteStringCore(s1, utf8strNone, SizeLen); } }
五. filezilla的乱码问题
1. 服务器端乱码, 搜索一下这个比较多见, 解释的也很清楚, 在站点管理器中改一下该站点的默认编码就好了.
作者自FileZilla Server V0.9.15开始(及相应的client版本),按RFC 2610 http://www.faqs.org/rfcs/rfc2640.html 规定的方式,默认使用UTF-8。而其他服务器和客户端并不用此标准。即,server和client对话时,Filezilla产品一上来就用UTF- 8,除非对方大喊一声UTF8 OFF;而其他的ftp产品则多数先用本地编码对话,除非对方说一声UTF8 ON。所以,Filezilla和其他软件对话时,就出现了一个讲UTF8,一个用本地编码,而大家都未沟通UTF8到底是on还是off,所以:乱码!
参见:http://blog.sina.com.cn/u/46dac66f010005lz
2. 本地文件夹乱码, 显示一个字好像4个unicode编码一样,
这个问题就奇怪了, 以前好像是好的啊, 不知道什么时候变成这样的,也搜索不到解决方案,
后来我偶尔在设置-> 语言里面, 把简体中文改成了系统默认, 就好了! 晕倒! 原因也不知道, 反正现在好了!
斗争了一天的输入法和乱码问题, 记录下来, 给大家分享一下, 有同样问题的人可以少折腾一下