2010-06-05 165 views
0

我写了一个小小的ruby脚本,当我们的svn中添加了一个新的提交时,它向我发送了一封电子邮件。Ruby字符编码问题

我得到的日志与此代码:

log = `/usr/bin/svnlook log #{ARGV[0]}` 

当我从bash的运行我的脚本,我得到的电子邮件良好的编码的字符,但是当我尝试它,并创建一个新的提交我拿错匈牙利字符。

我COMMITED这样的:
TES OEA

我得到这个电子邮件:
日志:??????TES​​ \ 197 \ 145 \ 195 \ 169 \ 195 \ 161

我该如何解决这个问题?

回答

0

是的,Ruby正在支持Unicode(不同)。 The libraries are in flux,赶上Ruby 1.9。

为了追踪你的bug,你需要弄清楚你的两种情况有什么不同。也许当你的提交钩运行时,它有一个不同的路径,因此不同的Ruby?它是同一台机器吗?这是同一个电子邮件客户端吗?从阅读电子邮件模板的翻译人员到阅读电子邮件的不同客户,它可能处于几个不同的级别。你有更多的信息?

+0

是的,它在同一台服务器上。当我执行测试时,这就是我所说的: ./post-commit/repository /,这是svn服务器在提交完成时调用的内容。我的post-commit bash脚本包含:REPOS =“$ 1” REV =“$ 2” ruby​​ /repository/hooks/mail.rb“$ REPOS”“$ REV” 我不知道wat可以是问题。我用 p UniversalDetector :: chardet(消息)试了一下。它告诉我,当我调用脚本时,编码是utf-8,当提交时调用它是一个ASCII码。 – 2010-06-05 22:13:48

+0

你可以尝试发送$ LOAD_PATH,$ _,$ 0,$ *,$“。在环境中肯定有不同的东西。 – ndp 2010-06-06 00:24:14

0

默认情况下,Ruby不支持Unicode,这是匈牙利字符的编码。除非你只使用ASCII提交,否则你需要使用某种类型的Unicode库进行研究。 ruby-unicode

根据我的经验,Python比Ruby有更好的Unicode支持,所以如果你的脚本没有做太多的工作,我会考虑Python或其他脚本语言。

编辑:显然,当我没有看,Ruby 1.9去了,并添加了适当的(ISH)Unicode支持。我还没有尝试过,但this博客文章经历了几个练习,我认为详细介绍了所有必要的功能(这不是很多)。