QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5470|回复: 12

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

[复制链接]
发表于 2006-7-29 02:52:45 | 显示全部楼层 |阅读模式
如题,真是好好的温习了一下csharp和mono这些东东,方法在mono中修改
一些GBK编码转义,在beagle中同样要做转换。等我再测测没问题,而又
有人感兴趣的话,就放出补丁来。

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

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


不多说,见贴图!!   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2006-7-29 11:08:10 | 显示全部楼层
不错不错。:)等着看补丁。   
回复

使用道具 举报

发表于 2006-7-29 11:45:12 | 显示全部楼层
>>估计暂时也很难移植到window上
记得好像已经有移植了
回复

使用道具 举报

发表于 2006-7-29 21:45:10 | 显示全部楼层
我还没有用过beagle,真是太out了
回复

使用道具 举报

 楼主| 发表于 2006-7-31 14:02:23 | 显示全部楼层

针对mono的几个gbk补丁

测试用例一(test1.cs):
[code:1]
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);
                }
        }
}
[/code:1]
测试操作一:
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):
[code:1]
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);
            }
        }
}
[/code:1]
测试操作二:
<使用上面建立的中文目录>
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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

 楼主| 发表于 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下的文件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2006-8-1 11:19:03 | 显示全部楼层
补丁似乎和G_FILENAME_ENCODING没什么关系    
回复

使用道具 举报

 楼主| 发表于 2006-8-1 12:30:52 | 显示全部楼层
   是的,G_FILENAME_ENCODING这个是设定gtk环境的,
不过beagle的search的图形界面有调用gtk-sharp,而后者又调用
gtk的库哦。
回复

使用道具 举报

 楼主| 发表于 2006-8-1 12:32:40 | 显示全部楼层
说得更清楚些G_FILENAME_ENCODING其实是由glib调用的,
glib的几个文件名转换的函数按这个参数来转换文件名称。
回复

使用道具 举报

发表于 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的破解方法,不胜感激。
回复

使用道具 举报

 楼主| 发表于 2006-8-22 19:52:14 | 显示全部楼层
请同我msn: wall_john at sohu.com联系,你那个是因为slick的脚本有点问题,在linux下,
要改几个地方。

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

使用道具 举报

发表于 2006-8-23 10:19:55 | 显示全部楼层
恩,了解!
回复

使用道具 举报

发表于 2006-8-30 20:14:21 | 显示全部楼层
[quote:0d1fd90548="wall_john"]请同我msn: wall_john at sohu.com联系,你那个是因为slick的脚本有点问题,在linux下,
要改几个地方。

另外,联系我时,说明你的来意,我才好添加好友,因为最近老受到骚扰   [/quote]
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.orig  2006-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)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-21 20:44 , Processed in 0.079935 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表