2017-07-24 48 views
1

我遇到了Ruby拒絕拆分包含特定拉丁字符的字符串(可能與其他人有問題)的問題。我知道有很多關於這個具體錯誤的帖子,但沒有一個答案對我有用。紅寶石:不兼容的編碼正則表達式匹配

我把問題歸結爲下面的例子。這是產生問題的整個腳本。腳本本身是UTF-8。

#!/usr/bin/ruby 
str = 'é' 
arr = str.split(/x/sm) 

第二行中的那個字符是拉丁字母e與急性。 (是的,我知道因爲字符串不包含'x',所以沒有太多的分割工作,這只是產生錯誤的一個例子。)

這裏是錯誤信息,安全和舒適:

./dev.rb:3:in `split': incompatible encoding regexp match 
(Windows-31J regexp with UTF-8 string) (Encoding::CompatibilityError) 
    from ./dev.rb:3:in `<main>' 

我試過重新編碼字符串無濟於事。無論是以下行的幫助:

str = str.force_encoding('iso-8859-1').encode('utf-8') 

str = str.force_encoding(Encoding::UTF_8) 

這裏的Ruby的版本我使用:

ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu] 

任何幫助表示讚賞。

回答