2011-09-01 61 views
3

File#path給我拉丁-1字符 - 是否有辦法讓它給我utf8字符,或者我應該轉換它返回的內容?如果是這樣,轉換最好/最簡單的方法是什麼?我如何從文件#路徑獲得utf8字符

闡述

所以,我知道我能做到這一點:

Iconv.new('UTF-8','LATIN1').iconv(File.basename(file.path)) 

但我不知道是否有一個更優雅的方式來告訴File給我UTF8開始。

這是特別重要的,因爲由於某種原因,我在不同的系統上得到不同的字符集。在我的OS X開發機器上,它看起來像我回到utf8。在我的Linux服務器上,拉丁語-1。

+0

是的,紅寶石1.8.7 –

+0

我有這個人一樣的問題:http://stackoverflow.com/questions/5489647/reading-filename-in-multiple-os-without-encoding-problem-with-ruby –

+0

ruby​​ 1.8是'roll-your-own-encoding-stuff',事情不同(大多數情況下效果更好),使用1.9 – reto

回答

1

在文檔的第一行中使用魔法註釋:

#encoding: UTF-8 
+0

不在1.8上,這對於外部API調用並不是一個好的解決方案 – raggi

1

見$ LANG和$ LC_CTYPE(環境變量)。

這些變量也決定了編碼默認值的默認值爲1.9,所以如果您稍後將代碼移植到1.9,您今天所做的更改也將起作用。

N.B.在這方面,Windows是一個稍微不同的野獸,所以你可能需要更多的信息來解決這個問題。