From: Masayoshi Takahashi Date: 2008-01-15T03:48:40+09:00 Subject: [ruby-dev:33105] Re: String#valid_encoding? shoud be strict? 高橋征義です。 Tanaka Akira さんは書きました: > In article <478B9502.1010306@rubycolor.org>, > Masayoshi Takahashi writes: > >> 【背景】 >> 入力チェック等で、ある文字列があるエンコーディングの範囲内に >> おさまっているか、厳格にチェックしたい場合があります。 >> (おさまっていない場合は再入力をうながしたり、「?」に強制的に >> 置換したりします)。 >> >> 【提案】 >> というわけで、例えば String#valid_encoding? で厳格なチェックが >> できるとうれしいです。具体的には、Shift_JISで、JISにない文字 >> (いわゆる機種依存文字)が含まれている場合、falseになると >> いった具合です。 > > そういう機能はあっていいだろうとは思いますが、とりあえずちょっ > とした疑問がひとつあります。 # ひとつだけですか? > UTF-8 もそういう厳格なチェックを行うんですか? 実際にあった要件としてはUTF-8の範囲での厳格なチェックが必要、 ということはありませんでした。 日本語以外での入力チェックに関しては、ASCIIについては いわゆるprintable asciiのチェックを行ったり、さらに そのサブセット(英数字のみとか)の入力制限を行うことは ありましたが、その他の言語での入力制限や、あらゆる言語をまたがる 入力制限というのは扱ったことがありません。 UTF-8に関して、JIS X 0213のいわゆる第3・第4水準も含んだ「JIS漢字」での 入出力制限、というのも将来的にはありうるとは思っていますが、実際 にはまだない上、携帯対応を考えるとしばらくはないかなと思います。 一方で、そのアプリケーションでのユーザからの入出力がUTF-8で あっても、内部的にいわゆるJIS漢字内かどうかのチェックが必要 な場合はあります(ストレージや外部システムとの連携時に制約が ある場合などです)。その場合は、UTF-8のままチェックできなく ても、他のエンコーディングに変換してのチェックが行えれば よいと思います。 高橋征義 (maki@rubycolor.org)