From: "Martin J. Dürst" Date: 2016-05-31T10:37:16+09:00 Subject: [ruby-dev:49637] 重要: 非互換性の可能性 Fwd: [ruby-cvs:62388] duerst:r55225 (trunk): * string.c: Activate full Unicode case mapping for UTF-8 下記の通り、大文字小文字変換を UTF-8 において ASCII だけからユニコード全体に変換しました。これにより、一部非互換性が出る可能性があります。 一例で見せますと、r55224 までは次の通り: 'résumé ĭñŧėřŋãţijňőńæłĩżàťïōņ'.upcase # -> 'RéSUMé ĭñŧėřŋãţijňőńæłĩżàťïōņ' それに対して、 r55225 以降は次の通り: 'résumé ĭñŧėřŋãţijňőńæłĩżàťïōņ'.upcase # -> 'RÉSUMÉ ĬÑŦĖŘŊÃŢIJŇŐŃÆŁĨŻÀŤÏŌŅ' 一般の場合、後者が好ましいので、まつもとさんがわざわざそのように提案しました(https://bugs.ruby-lang.org/issues/10085#note-5 参照). しかし、例外があります。例えば DNS のサーバの場合です。その場合、今まで通り ASCII のみ変換を行いたいでしょう (https://bugs.ruby-lang.org/issues/10085#note-9 参照). これは次のようにできます: 'résumé ĭñŧėřŋãţijňőńæłĩżàťïōņ'.upcase(:ascii) # -> 'RéSUMé ĭñŧėřŋãţijňőńæłĩżàťïōņ' 必ず ASCII のみの変換が必要な場合、上記のように :ascii オプションを使ってください。 (扱うデータが既に全て ASCII の場合、オプションを付ける必要はありません。) オプションについての詳しい説明は String#downcase の説明にありますが、全ての大文字小文字変換のメソッド (upcase/downcase/capitalize/swapcase) に共通です。 UTF-8 以外の文字コードのための実装はこれから追加されます。 よろしくお願いします。 Martin. -------- Forwarded Message -------- Subject: [ruby-cvs:62388] duerst:r55225 (trunk): * string.c: Activate full Unicode case mapping for UTF-8 by removing Date: Tue, 31 May 2016 01:10:07 +0000 From: duerst@ruby-lang.org To: ruby-cvs@ruby-lang.org duerst 2016-05-31 10:10:06 +0900 (Tue, 31 May 2016) New Revision: 55225 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=55225 Log: * string.c: Activate full Unicode case mapping for UTF-8 by removing the protective check for the presence of an option. Update documentation. * test/ruby/enc/test_case_comprehensive.rb: Adjust tests for above change. Modified files: trunk/ChangeLog trunk/string.c trunk/test/ruby/enc/test_case_comprehensive.rb .