Issue #14388 has been updated by nagachika (Tomoyuki Chikanaga).

Backport changed from 2.3: REQUIRED, 2.4: REQUIRED, 2.5: DONE to 2.3: REQUIRED, 2.4: DONE, 2.5: DONE

ruby_2_4 r62875 merged revision(s) 62040.

----------------------------------------
Bug #14388: 不正エンコーディング文字列から切り出した正当なエンコーディング文字列が invalid encoding になる
https://bugs.ruby-lang.org/issues/14388#change-71146

* Author: tommy (Masahiro Tomita)
* Status: Closed
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]
* Backport: 2.3: REQUIRED, 2.4: DONE, 2.5: DONE
----------------------------------------
~~~ ruby
data = "\xFFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
p data.encoding               #=> #<Encoding:UTF-8>
p data                        #=> "\xFFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
p data.valid_encoding?        #=> false
data2 = data[1..-1]
p data2                       #=> "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
p data2.valid_encoding?       #=> false
data3 = data2 + ""
p data3.valid_encoding?       #=> true
~~~

data は invalid ですが、data から切り出した data2 は valid のはずです。
末尾に空文字列を追加すると valid になります。



-- 
https://bugs.ruby-lang.org/