Issue #7954 has been reported by Tietew (Toru Iwase). ---------------------------------------- Bug #7954: "あ".byteslice(0,2).valid_encoding? should return false https://bugs.ruby-lang.org/issues/7954 Author: Tietew (Toru Iwase) Status: Open Priority: Normal Assignee: Category: Target version: 2.0.0 ruby -v: 2.0.0p0 =begin valid encodingな文字列に対するString#bytesliceがinvalid encodingなバイト列を生成してもvalid_encoding?がtrueになります。 これはfalseになるべきだと思います。 なお、1.9.3も同じ挙動です。 irb(main):001:0> RUBY_DESCRIPTION => "ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]" irb(main):002:0> "あ".encoding => #<Encoding:UTF-8> irb(main):003:0> "あ".valid_encoding? => true irb(main):004:0> "あ".byteslice(0,2) => "\xE3\x81" irb(main):005:0> "あ".byteslice(0,2).valid_encoding? => true irb(main):006:0> "\xE3\x81".encoding => #<Encoding:UTF-8> irb(main):007:0> "\xE3\x81".valid_encoding? => false ちなみに、invalidな文字列を正しい位置でbytesliceすると正しくvalidと判定されます。 irb(main):025:0> "あ\xE3".valid_encoding? => false irb(main):026:0> "あ\xE3".byteslice(0,3).valid_encoding? => true =end
on 2013-02-25 10:07
on 2013-02-25 10:48
Issue #7954 has been updated by duerst (Martin Dürst). この場合の問題はそもぞも > "あ".byteslice(0,2).encoding => #<Encoding:UTF-8> にあるかと思います。byteslice の戻り値の encoding は BINARY にすべきだと思います。 ---------------------------------------- Bug #7954: "あ".byteslice(0,2).valid_encoding? should return false https://bugs.ruby-lang.org/issues/7954#change-36991 Author: Tietew (Toru Iwase) Status: Open Priority: Normal Assignee: Category: Target version: 2.0.0 ruby -v: 2.0.0p0 =begin valid encodingな文字列に対するString#bytesliceがinvalid encodingなバイト列を生成してもvalid_encoding?がtrueになります。 これはfalseになるべきだと思います。 なお、1.9.3も同じ挙動です。 irb(main):001:0> RUBY_DESCRIPTION => "ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]" irb(main):002:0> "あ".encoding => #<Encoding:UTF-8> irb(main):003:0> "あ".valid_encoding? => true irb(main):004:0> "あ".byteslice(0,2) => "\xE3\x81" irb(main):005:0> "あ".byteslice(0,2).valid_encoding? => true irb(main):006:0> "\xE3\x81".encoding => #<Encoding:UTF-8> irb(main):007:0> "\xE3\x81".valid_encoding? => false ちなみに、invalidな文字列を正しい位置でbytesliceすると正しくvalidと判定されます。 irb(main):025:0> "あ\xE3".valid_encoding? => false irb(main):026:0> "あ\xE3".byteslice(0,3).valid_encoding? => true =end
on 2013-02-25 11:10
Issue #7954 has been updated by naruse (Yui NARUSE). Category set to M17N Status changed from Open to Assigned Assignee set to naruse (Yui NARUSE) duerst (Martin Dürst) wrote: > この場合の問題はそもぞも > > "あ".byteslice(0,2).encoding > => #<Encoding:UTF-8> > > にあるかと思います。byteslice の戻り値の encoding は BINARY にすべきだと思います。 BINARY で受け取りたいならば、"あ".b.slice(0,2) とすればいいのであって、別のメソッドである意味がありません。 ---------------------------------------- Bug #7954: "あ".byteslice(0,2).valid_encoding? should return false https://bugs.ruby-lang.org/issues/7954#change-36992 Author: Tietew (Toru Iwase) Status: Assigned Priority: Normal Assignee: naruse (Yui NARUSE) Category: M17N Target version: 2.0.0 ruby -v: 2.0.0p0 =begin valid encodingな文字列に対するString#bytesliceがinvalid encodingなバイト列を生成してもvalid_encoding?がtrueになります。 これはfalseになるべきだと思います。 なお、1.9.3も同じ挙動です。 irb(main):001:0> RUBY_DESCRIPTION => "ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]" irb(main):002:0> "あ".encoding => #<Encoding:UTF-8> irb(main):003:0> "あ".valid_encoding? => true irb(main):004:0> "あ".byteslice(0,2) => "\xE3\x81" irb(main):005:0> "あ".byteslice(0,2).valid_encoding? => true irb(main):006:0> "\xE3\x81".encoding => #<Encoding:UTF-8> irb(main):007:0> "\xE3\x81".valid_encoding? => false ちなみに、invalidな文字列を正しい位置でbytesliceすると正しくvalidと判定されます。 irb(main):025:0> "あ\xE3".valid_encoding? => false irb(main):026:0> "あ\xE3".byteslice(0,3).valid_encoding? => true =end
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.