Project

General

Profile

Actions

Backport #7954

closed

"あ".byteslice(0,2).valid_encoding? should return false

Added by Tietew (Toru Iwase) about 11 years ago. Updated about 11 years ago.

Status:
Closed
[ruby-dev:47108]

Description

=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

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0