2015-06-26 65 views
0

只是遇到了2個關於File.expand_path api的問題。希望如果有人能幫助我在這:-)ruby​​ File.expand_path奇怪的行爲

紅寶石:2.1.5p273(2014-11-13修訂48405)x86_64的Linux的] 操作系統:Ubuntu的14.04.2

1.爲什麼編碼.default_internal的劑量不會影響File.expand_path的編碼嗎?

2.1.5 :002 > Encoding.default_internal="utf-8" 
=> "utf-8" 
2.1.5 :003 > File.expand_path("/").encoding 
=> #<Encoding:US-ASCII> 

2.爲什麼File.expand_path返回不同的編碼?

2.1.5 :007 > File.expand_path("/").encoding 
=> #<Encoding:US-ASCII> 
2.1.5 :008 > File.expand_path(".").encoding 
=> #<Encoding:UTF-8> 

回答

0

我認爲String#encoding默認爲「US-ASCII」。

我的猜測是,String#encoding檢查字符串,並檢測它是否包含任何非ascii字符,並在這種情況下,返回「UTF-8」。

/路徑顯然不包含任何非ASCII字符,而您.路徑依賴於你的代碼的工作目錄,因此,如果您在路徑中有非ASCII字符的地方到您當前的工作目錄,然後String#encoding會返回「UTF-8」。