[ruby-dev:49637] 重要: 非互換性の可能性 Fwd: [ruby-cvs:62388] duerst:r55225 (trunk): * string.c: Activate full Unicode case mapping for UTF-8
From:
Martin J. Dürst <duerst@...>
Date:
2016-05-31 01:37:16 UTC
List:
ruby-dev #49637
下記の通り、大文字小文字変換を 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
.