2016-06-19 19 views
1

RIZALTE我試圖解析一些表,他們有一些奇怪的字母樣的非ascii字符

我有一些像上面的怪異字符。 在谷歌,它的工作原理,它甚至在Web瀏覽器搜索功能上搜索相同的字符,但它不匹配的紅寶石控制檯。

是什麼..? 是否有某種表格可以將其替換爲正常字母?

+3

你沒有提供實際的背景下,我們可以看看我們自己 – Jonathan

+0

這裏做的意義是一個網頁的鏈接,可以幫助您更好地制定你的問題:http://stackoverflow.com/help/how-to -ask –

回答

4

這些都是Unicode的全角拉丁字符。例如,第一個是U+FF32,全幅拉丁大寫字母R.您可以通過Unicode normalization將它們轉換爲「普通」拉丁字符。

如果你使用Ruby 2.2或更新版本,您可以使用內置的String#unicode_normalize方法:

"RIZALTE".unicode_normalize(:nfkc) 
# => "RIZALTE" 

:nfkc是指標準化,NFKC,這超出了這個答案的範圍的類型,但如果你想知道這裏發生了什麼,那麼值得閱讀Wikipedia article

對於早期版本的Ruby,如果你使用Rails可以使用ActiveSupport::Multibyte::Chars#normalize方法,您可以通過訪問String#mb_chars

"RIZALTE".mb_chars.normalize 
# => "RIZALTE" 

的ActiveSupport使用NFKC默認。

+1

電流紅寶石的版本還包括[Unicode規範化](http://ruby-doc.org/stdlib-2.3.1/libdoc/unicode_normalize/rdoc/String.html#method-i-unicode_normalize),所以很容易即使你不使用Rails。雖然默認值與Rails不同,所以您需要將規範化形式指定爲參數:''RIZALTE「.unicode_normalize(:nfkc)'。 – matt

+0

啊整齊,不知道這是沒有AS的可能。 –

+0

感謝您的提醒,@matt!我已經更新了我的答案。 –

相關問題