2012-03-05 78 views
4

我正在嘗試編寫一行代碼,這些代碼將採用一行日文文本並刪除一組特定的字符。不過,我在正則表達式中使用unicode字符時遇到了麻煩。如何在Ruby的正則表達式中使用unicode字符?

我目前使用的text.gsub(/《.*?》/u, ''),但我得到的錯誤

'gsub': invalid byte sequence in Windows-31J (Argument error) 

誰能告訴我我在做什麼錯誤?

實施例文本:その仕草「しぐさ」があまりに無造作「むぞうさ」だったので

預期結果:その仕草があまりに無造作だったので

由於

編輯:# encoding: utf-8是本在腳本的頂部。

+0

是的,我有。對不起忘了我提到它。 – SomberClock 2012-03-05 02:06:56

+0

我試過你的'irb'的例子,並得到了預期的結果。似乎問題不是正則表達式,而是'text'的編碼。 「文字」從哪裏來?從文件讀取? – 2012-03-05 02:16:23

+0

您可以在此看一看: http://stackoverflow.com/questions/256822/how-to-use-regex-for-utf8-in-ruby – Nevin 2012-03-05 02:16:32

回答

2

試試這個:

text.encode('utf-8', 'utf-8').gsub(/《.*?》/u, '') 
+0

這工作完美!謝謝你,先生。 – SomberClock 2012-03-05 02:24:04

+0

請解釋爲什麼,因爲你在那裏對我沒有意義。 – tchrist 2012-03-05 02:55:37

+1

@tchrist強制將文本編碼爲UTF-8。 – 2012-03-05 03:09:58

相關問題