2012-06-09 175 views
3

這裏字符串比較和字符編碼是誤差:紅寶石在IRB

=> ["Mænd med navnet Kim", "30.094", "29.946", "-148", "Kvinder med navnet Kim", 
"341", "345", "4", "Mænd med navnet Kim Hansen", "1.586", "1.573", "-13", "Kvin 
der med navnet Kim Hansen", "5", "5", "0", "Mænd og kvinder med efternavnet Hans 
en", "226.040", "223.478", "-2.562"] 
irb(main):094:0> 
irb(main):095:0* @tester.index("Mænd med navnet Kim") 
=> nil 
irb(main):096:0> @tester.index("Kvinder med navnet Kim") 
=> 4 
irb(main):097:0> @tester.index("Mænd med navnet Kim Hansen") 
=> nil 
irb(main):098:0> @tester.index("Kvinder med navnet Kim Hansen") 
=> 12 
irb(main):099:0> @tester.index("Mænd og kvinder med efternavnet Hansen") 
=> nil 
irb(main):100:0> 

實施例試圖GSUB方法:

<ap(&:text).map{|d| d.delete "'"}.map{|d| d.gsub("æ", "#844"} 
irb(main):113:1>) 
SyntaxError: (irb):112: syntax error, unexpected '}', expecting ')' 
+0

什麼的Ruby版本?我無法在1.9.3-p194上覆制它。 –

+0

是在1.9.3 .... –

+0

除了其他的事情,如輸入它出現你的字符串'「Kvin der med navnet Kim Hansen」'&'「Mændog kvinder med efternavnet Hans en」'在他們有新行,而你的第四個'index'調用有一個''',它不在數組的字符串中。另外,我假設顯示的數組實際上在'@ tester'中?你不顯示賦值調用本身,只顯示REPL的輸出。 –

回答

4

由於您的輸入字符串似乎是UTF-8,最簡單的解決方案是用相同的編碼運行irb會議:

irb -EUTF-8 

這應該使串ENTR y在irb命令提示符下默認爲UTF-8。

關於Ruby 1.9編碼良好的資源:
http://blog.grayproductions.net/articles/understanding_m17n

+1

你也可以確保你的'$ LANG'環境變量被設置爲一些UTF-8語言(例如'en_US.UTF-8'),因爲我相信IRB會使用任何設定的內容 –

+0

@AndrewMarshall是......同意。最好統一整個系統的編碼。 – Casper