wall_john 发表于 2006-7-29 02:52:45

一顿恶搞让beagle能支持GBK编码了

如题,真是好好的温习了一下csharp和mono这些东东,方法在mono中修改
一些GBK编码转义,在beagle中同样要做转换。等我再测测没问题,而又
有人感兴趣的话,就放出补丁来。

beagle这个东东居然也是novell搞的,c和csharp的混合式编程,虽然
代码还很混乱(主要指低级调用和外围csharp的开发分界不清晰,而且各各
包之间的依存关系也很模糊,估计暂时也很难移植到window上),但基本结
构已经出来,对于想学mono开发的也可算优秀的代码读物。

贴图一:修改了中文gbk目录和文件的问题,修改了thumbnail图标的显示。
贴图二:修改了beagle中对mp3 filter的功能使其能设置默认的mp3 tag的
编码。


不多说,见贴图!! :lol::lol:

yangh 发表于 2006-7-29 11:08:10

不错不错。:)等着看补丁。 :mrgreen::mrgreen:

jcome 发表于 2006-7-29 11:45:12

>>估计暂时也很难移植到window上
记得好像已经有移植了

Linux_Lyb 发表于 2006-7-29 21:45:10

我还没有用过beagle,真是太out了 :-D

wall_john 发表于 2006-7-31 14:02:23

针对mono的几个gbk补丁

测试用例一(test1.cs):

using System;
using System.IO;

public class Test
{
      public static void Main(string[] args) {
                Console.WriteLine ("dir {0}, filter {1}", args[0], args[1]);
                DirectoryInfo dirInfo = new DirectoryInfo(args[0]);
                FileInfo[] filesInfo = dirInfo.GetFiles(args[1]);
                foreach (FileInfo info in filesInfo)
                {
                  Console.WriteLine("file: {0}", info.Name);
                }
      }
}

测试操作一:

mkdir 测试中文目录
touch 测试中文目录/测试中文文件1.txt
touch 测试中文目录/测试中文文件2.txt
touch 测试中文目录/测试中文文件3.txt
touch 测试中文目录/测试中文文件4.txt
mcs test1.cs


测试正常输出:

mono test1.exe 测试中文目录/ '*'
dir 测试中文目录/, filter *
file: 测试中文文件1.txt
file: 测试中文文件2.txt
file: 测试中文文件3.txt
file: 测试中文文件4.txt

如果输出不正常,比如输出乱码或无输出,请打附件中
mono-1.1.16.1-metadata-file-io-cjk.patch
补丁。

测试用例二(test2.cs):

using System;

using Mono.Unix.Native;
using Mono.Unix;

public class Test
{
      public static void Main(string[] args) {
            Console.WriteLine ("dir: {0}", args[0]);

            IntPtr dir = Syscall.opendir(args[0]);
            if (dir != IntPtr.Zero)
            {
            next:
                Dirent file = Syscall.readdir(dir);
                if (file != null)
                {
                  Console.WriteLine("file: {0}", file.d_name);
                  goto next;
                }
                Syscall.closedir(dir);
            }
      }
}

测试操作二:

<使用上面建立的中文目录>
mcs -r:Mono.Posix test2.cs


测试正常输出:

mono test2.exe 测试中文目录/
dir: 测试中文目录/
file: .
file: ..
file: 测试中文文件1.txt
file: 测试中文文件2.txt
file: 测试中文文件3.txt
file: 测试中文文件4.txt

如果输出不正常,比如输出乱码或无输出,请打附件中
mono-1.1.16.1-Mono_Unix_Native_Syscall-cjk.patch
mono-1.1.16.1-Mono_Unix_Native_FileNameMarshaler-cjk.patch
补丁。

注意事项:
我的环境

set | grep -iR GBK
G_FILENAME_ENCODING=GBK
LANG=zh_CN.GBK
MONO_EXTERNAL_ENCODINGS=GBK
MP3_ID3_TAG_ENCODING=GBK

GBK改成GB18030应该也是没问题的。
MP3_ID3_TAG_ENCODING这个参数,用于beagle中设置默认的mp3 tag的编码。

补丁对应mono版本为:1.1.16.1

wall_john 发表于 2006-7-31 14:09:35

beagle的gbk中文编码补丁

beagle的gbk编码补丁,依次打附件中:
beagle-0.2.7-cjk.patch
beagle-0.2.7-cjk-mp3-filter.patch
这两个补丁。

注意事项:
1、编译beagle之前,你的mono环境必须通过上面两个mono的测试用例。
2、我的环境

set | grep -iR GBK
G_FILENAME_ENCODING=GBK
LANG=zh_CN.GBK
MONO_EXTERNAL_ENCODINGS=GBK
MP3_ID3_TAG_ENCODING=GBK

GBK改成GB18030应该也是没问题的。
MP3_ID3_TAG_ENCODING这个参数,用于beagle中设置默认的mp3 tag的编码。
3、beagle的版本为:0.2.7
4、补丁的具体作用在补丁文件中做了注释说明。
5、如果你系统中已安装过beagle,请删除~/.beagle下的文件

mandrakechina 发表于 2006-8-1 11:19:03

补丁似乎和G_FILENAME_ENCODING没什么关系:roll::roll:

wall_john 发表于 2006-8-1 12:30:52

:lol::lol: 是的,G_FILENAME_ENCODING这个是设定gtk环境的,
不过beagle的search的图形界面有调用gtk-sharp,而后者又调用
gtk的库哦。

wall_john 发表于 2006-8-1 12:32:40

说得更清楚些G_FILENAME_ENCODING其实是由glib调用的,
glib的几个文件名转换的函数按这个参数来转换文件名称。

s5unty 发表于 2006-8-22 16:33:27

终于能和你说上话了

英雄~~~~~~wall_john,你的blog我用firefox看不到验证图片,没法留言阿:<

是关于vs的问题:),我以前一直用10.0.0,后来转到11.0.1发现没什么我需要的改动,而且似乎在拖动工具栏还会死机。所以现在我想把原来的10.0.0升级成10.0.3,你能否告诉我10.0.3的破解方法,不胜感激。

wall_john 发表于 2006-8-22 19:52:14

请同我msn: wall_john at sohu.com联系,你那个是因为slick的脚本有点问题,在linux下,
要改几个地方。

另外,联系我时,说明你的来意,我才好添加好友,因为最近老受到骚扰 :mrgreen::mrgreen:

s5unty 发表于 2006-8-23 10:19:55

恩,了解!

stanleypeng 发表于 2006-8-30 20:14:21

请同我msn: wall_john at sohu.com联系,你那个是因为slick的脚本有点问题,在linux下,
要改几个地方。

另外,联系我时,说明你的来意,我才好添加好友,因为最近老受到骚扰 :mrgreen::mrgreen:
beagle的这个补丁beagle-0.2.7-cjk.dpatch缺少对于Makefile.in的修改,这样Makefile才能奏效。

另外,我把gtk-sharp改成了glib-sharp,因为看到beagle 0.2.8放弃了gtk-sharp了。
--- beagle-0.2.7/Util/Makefile.in.orig2006-08-30 20:00:17.000000000 +0800
+++ beagle-0.2.7/Util/Makefile.in   2006-08-30 20:01:08.000000000 +0800
@@ -621,7 +621,7 @@
    $(CSC) -unsafe -out:$@ $(CSFLAGS) $(UI_UTIL_CSFILES) $(UI_UTIL_ASSEMBLIES)

Inotify.exe: $(INOTIFY_TEST_CSFILES)
-   $(CSC) -unsafe -out:$@ $^ -r:Mono.Posix -define:INOTIFY_TEST -define:ENABLE_INOTIFY
+   $(CSC) -unsafe -out:$@ $^ -r:Mono.Posix -pkg:glib-sharp-2.0 -define:INOTIFY_TEST -define:ENABLE_INOTIFY

all: $(ALL_TARGETS)
页: [1]
查看完整版本: 一顿恶搞让beagle能支持GBK编码了