2010-06-05 95 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博客文章經歷了幾個練習,我認爲詳細介紹了所有必要的功能(這不是很多)。