[#40528] [Feature #2833] 絵文字エンコーディングの提案 — Kenta Murata <redmine@...>
Feature #2833: 絵文字エンコーディングの提案
まつもと ゆきひろです
=1B$B$`$i$?$G$9!#=1B(B
GyRCOjQhOUxaJEg/PSQ3JF4kOSEjGyhCCgpSYWlscxskQiROGyhCanBtb2JpbGUbJEIkSCQkJCYl
チケット #2833 が更新されました。 (by Yui NARUSE)
=1B$B$`$i$?$G$9!#=1B(B
遠藤です。
遠藤です。
> Feature #2833: 絵文字エンコーディングの提案
[#40573] [bug:1.8] ossl_ssl_session.c:110: warning: implicit declaration of function 'TIMET2NUM' — Tanaka Akira <akr@...>
Ruby 1.8 で、以下の警告が増えています。
2010/3/7 Tanaka Akira <akr@fsij.org>:
[#40597] Re: [ruby-list:46898] 重複組合せは組込みにならないのでしょうか? — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp>
きしもとです
まつもと ゆきひろです
遠藤です。
> 同様に、repeated_permutation/combination のデフォルト引数にも反対
まつもと ゆきひろです
[#40614] [Bug #2956] segfault — Tomoki MAEDA <redmine@...>
Bug #2956: segfault
[#40623] Enumerable#interleave — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
2010年3月13日22:44 Yukihiro Matsumoto <matz@ruby-lang.org>:
まつもと ゆきひろです
2010年3月14日0:04 Yukihiro Matsumoto <matz@ruby-lang.org>:
まつもと ゆきひろです
[#40641] [Bug #2965] method `===' called on hidden T_STRING object (NotImplementedError) — Kenta Murata <redmine@...>
Bug #2965: method `===' called on hidden T_STRING object (NotImplementedError)
チケット #2965 が更新されました。 (by Shyouhei Urabe)
[#40643] draft of 1.9.2 release schedule — Yusuke ENDOH <mame@...>
Yugui さん、
[#40649] [Feature #2968] 数値の正負を返すメソッド — Yui NARUSE <redmine@...>
Feature #2968: 数値の正負を返すメソッド
チケット #2968 が更新されました。 (by Yui NARUSE)
> チケット #2968 が更新されました。 (by Yui NARUSE)
成瀬です。
> 成瀬です。
[#40650] [Feature #2969] String#to_f が -h.hhh±pd を解釈できるように — Yui NARUSE <redmine@...>
Feature #2969: String#to_f が -h.hhh±pd を解釈できるように
質問ですが、この形式は入力だけでなく、なんらかの方法で出力でも利用でき
成瀬です。
> String#to_f は従来から指数表記を許していたので、
成瀬です。
> to_i がデフォルトで prefix を見ないのは、0377 のような、
成瀬です。
> 先のパッチの対象関数が ruby_strtod である通り、
成瀬です。
> strtod(3) の解釈対象に含まれていない 2 進や 8 進を否定することが、
(2010/03/26 3:05), Tadayoshi Funaba wrote:
> なぜ同じなのでしょう。
(2010/03/26 4:02), Tadayoshi Funaba wrote:
>> strtod(3) を参考にしたり、影響されたりすることは普通にあるとは思います
(2010/03/27 18:19), KOSAKI Motohiro wrote:
えぐち@エスアンドイーです
(2010/03/27 20:26), EGUCHI Osamu wrote:
> つまり、ふなばさんは 16 進よりも 2 進や 8 進形式が好みであるところ、
まつもと ゆきひろです
[#40672] URI methods for application/x-www-form-urlencoded — Tanaka Akira <akr@...>
最近、成瀬さんが追加した URI.encode_www_form など、
[#40695] keiju, please check tickets assigned to you — Yusuke ENDOH <mame@...>
いしつかさん
けいじゅ@いしつかです.
いしつかさん
けいじゅ@いしつかです.
遠藤です。
[#40735] [Bug #2995] TestHash#test_recursive_check fails — Shugo Maeda <redmine@...>
Bug #2995: TestHash#test_recursive_check fails
[#40746] [Bug #1031] -U オプションの説明が --help にない — Yusuke Endoh <redmine@...>
チケット #1031 が更新されました。 (by Yusuke Endoh)
前田です。
[#40779] [Feature #3018] UNINITIALIZED_VAR() マクロの導入 — Motohiro KOSAKI <redmine@...>
Feature #3018: UNINITIALIZED_VAR() マクロの導入
まつもと ゆきひろです
> |Linuxではこの問題にたいして以下のようなマクロで解決しており、同様の手法を導入したいと
まつもと ゆきひろです
本題じゃないですが、
[#40805] Improvement of Fiber switching cost with system dependent way — SASADA Koichi <ko1@...>
ささだです.
こんにちは、なかむら(う)です。
[#40832] Process.daemon() returns -1 on failure ifndef HAVE_DAEMON — "Akinori MUSHA" <knu@...>
Process.daemon() 失敗時の挙動が、 HAVE_DAEMON 定義時と非定義時
2010年3月29日19:52 Akinori MUSHA <knu@idaemons.org>:
> 2010年3月29日19:52 Akinori MUSHA <knu@idaemons.org>:
[#40833] [Bug: trunk] Fiber transfer limitation — SASADA Koichi <ko1@...>
ささだです.
[#40855] revert 1.9 \w limitation to ASCII — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#40884] [Feature #3065] [TypedData] という名前について — Tadashi Saito <redmine@...>
Feature #3065: [TypedData] という名前について
[ruby-dev:40721] Re: URI methods for application/x-www-form-urlencoded
2010年3月17日4:45 NARUSE, Yui <naruse@airemix.jp>:
>> * URI.encode_www_component
>> * 生成結果の encoding は引数の encoding になりますが、
>> まずい場合もあるのではないでしょうか。
>> 引数が UTF-16BE など ASCII非互換の場合にはあからさまにまずくて、
>> 生成した % という文字が文字になりません。
>>
>> これも実際には困らない気はします。
>
> これも修正します。
考えたのですが、これはうまくないようです。
% ./ruby -ruri -e '
v = URI.encode_www_form_component("aあ".encode("UTF-16BE"))
puts v.dump, v.encoding'
"\x00a%30%42"
US-ASCII
この例の結果は、最初の 2バイトは UTF-16BE な a という文字で、
それ以降は US-ASCII な %30%42 という 6文字というものになっています。
これはひとつの文字列の中に UTF-16BE と US-ASCII が混ざっていて、
あからさまに変です。
http://www.w3.org/TR/html5/forms.html#url-encoded-form-data の
4. For each character in the entry's name and value, apply the following
subsubsteps:
1. If the character isn't in the range U+0020, U+002A, U+002D, U+002E,
U+0030 to U+0039, U+0041 to U+005A, U+005F, U+0061 to U+007A then
replace the character with a string formed as follows: Start with
the empty string, and then, taking each byte of the character when
expressed in the selected character encoding in turn, append to the
string a U+0025 PERCENT SIGN character (%) followed by two
characters in the ranges U+0030 DIGIT ZERO (0) to U+0039 DIGIT NINE
(9) and U+0041 LATIN CAPITAL LETTER A to U+0046 LATIN CAPITAL
LETTER F representing the hexadecimal value of the byte
(zero-padded if necessary).
2. If the character is a U+0020 SPACE character, replace it with a
single U+002B PLUS SIGN character (+).
という部分を読むと、selected character encoding が何か、
という点が問題になります。
この文書のもうちょっと上の方には selected character encoding は
なにか ASCII-compatible character encoding を選ぶということが書いてあります。
UTF-16BE はあからさまに ASCII-compatible character encoding ではないのですが、
あえてその点は無視して選んでしまったときに何が起きるかというと、
"aあ" という文字列の各文字 ("a", "あ") それぞれについて、
"a" は U+0061 なのでリストに入っているためそのままにして、
"あ" は U+3042 なのでリストに入っていなくて、
selected character encoding (今回は UTF-16BE) で表現された文字 (0x30, 0x42)の
各バイトそれぞれについて、%HH の形式にするので、"%30%42" になり、
全体を合わせると "a%30%42" という結果になります。
(そして、この中に U+0020 は入っていないので + になるところはありません)
そして、RFC 3986 (URI) を考えると、
%30 や %42 に対応する ASCII 文字は unreserved なので、
それらは percent encoding にするかどうかで意味が変化しないことになっています。
つまり、%30 は 0 と等価で、%42 は B と等価です。
というわけで、"a%30%42" という文字列をデコードすると "a0B" にせざるを得ません。
つまり、もともとの "aあ" という文字列が伝わりません。
つまり、ASCII-compatible character encoding を選ぶことになっているのには理由があります。
無視するのはよろしくありません。
思い浮かぶ対策としては、以下くらいでしょうか。
* 自動的に UTF-8 に変換
* ISO-2022-JP などと同じく、すべてのバイトを percent encoding
* 例外
なお、ISO-2022-JP など Unicode 以外の ASCII incompatible encoding ですべての
バイトを percent encoding にするという現状の動作は変えなくていいと思います。
>> * URI.decode_www_component
>> * 第2引数として encoding を指定可能にすべきではないでしょうか。
> そうですね、デフォルトは UTF-8 にしましょうか。
デフォルトじゃなくて強制になっています。
% ./ruby -ruri -e '
v = URI.decode_www_form_component("%A1%A2", "EUC-JP")
p v
p v.encoding
'
"\xA1\xA2"
#<Encoding:UTF-8>
せっかく enc 引数を受け付けているのに、使っていません。
あと、TBLDECWWWCOMP_['+'] = ' ' if i == 0x20 が
ループの中にあるのは無駄でしょう。
--
[田中 哲][たなか あきら][Tanaka Akira]