2013-04-16 73 views
23

我不知道Ruby,但要運行腳本的地方:紅寶石2.0的iconv更換

d:/Heather/Ruby/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb: 45:在'需要':無法加載這樣的文件 - 的iconv(LoadError)

它工作在某種程度上,如果我評論的iconv代碼,但它會更好,如果我能重新編寫這一部分:

return Iconv.iconv('UTF-8//IGNORE', 'UTF-8', (s + ' ')).first[0..-2] 

沒有iconv 。也許我可以在這裏用String#encode

+0

你想做什麼?如果我們知道,我們可以建議你。 –

+0

運行此腳本:https://github.com/purcell/darcs-to-git/blob/master/darcs-to-git(第157行 - iconv的使用) – Cynede

回答

36

Iconv在1.9.3中被棄用(刪除)。 您仍然可以安裝它。

參考資料,如果你不確定: https://rvm.io/packages/iconv/

但是建議是,你不和而使用:

string.encode("UTF-8", :invalid => :replace, :undef => :replace, :replace => "?") 

API

+12

「棄用(刪除)」 - 大聲笑,這兩個字有完全不同的含義。 – Trejkaz

8

如果你不上的Ruby 2.1,因此無法使用String#scrub那麼下面將忽略不正確的UTF-8編碼字符串的所有部分。

string.encode('UTF-16', :invalid => :replace, :replace => '').encode('UTF-8') 

的編碼方法幾乎不正是你想要的,但需要提醒的是,如果它認爲字符串已經是UTF-8編碼沒有做任何事情。因此,您需要更改編碼,通過編碼仍然可以編碼UTF-8可編碼的全套Unicode字符。 (如果你不這樣做,你會損壞任何不在該編碼中的字符--7位ASCII將是一個非常糟糕的選擇!)