2016-06-19 19 views
1

RIZALTEを私はいくつかのテーブルを解析しようとしていると、彼らはいくつかの奇妙なアルファベットのような非ASCII文字を持っています。 Googleでは、それは動作し、ウェブブラウザ検索機能で同じ文字を検索することさえできますが、ルビーコンソールでは一致しません。私は上記のもののようないくつかの奇妙な文字を持っている</p> <p>

これはなんですか? これを通常のアルファベットに置き換えることのできる種類のテーブルがありますか?

+3

私たちが自分自身のために見ることができる実際のコンテキストを提供しなければ意味がありません – Jonathan

+0

あなたの質問をより良くするのに役立つページへのリンクです:http://stackoverflow.com/help/how-to -ask –

答えて

4

これらは、Unicode全角ラテン文字です。たとえば、最初はU+FF32、完全長ラテン文字大文字Rです。Unicode normalizationで「通常」のラテン文字に変換できます。

あなたはルビー2.2以降を使用している場合は、内蔵のString#unicode_normalize方法を使用することができます

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

:nfkcをこの答えの範囲を超えている正規の種類、NFKC、を意味するが、実際に何が起こっているのかを知りたい場合はWikipedia articleを読む価値があります。

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

activesupportのがデフォルトでNFKCを使用しています:あなたはRailsのを使用している場合

は、Rubyの以前のバージョンでは、あなたがString#mb_chars経由でアクセスすることができActiveSupport::Multibyte::Chars#normalize方法を、使用することができます。

+1

Rubyの最新バージョンには、[unicode normalization](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を思い出してくれてありがとう!私は私の答えを更新しました。 –

関連する問題