Issue #8123 has been updated by jsc (Justin Collins).


This code appears to be working (not raising an exception) as early as Ruby 2.1.10:

~~~
$ ruby -v
ruby 2.1.10p492 (2016-04-01 revision 54464) [x86_64-darwin17.0]
$ irb
2.1.10 :001 > body, charset = "hey", "hey".encoding.to_s
 => ["hey", "UTF-8"]
2.1.10 :002 > body = body.encode('UTF-8', charset,
2.1.10 :003 >     :invalid => :replace, :undef => :replace,
2.1.10 :004 >     :replace => '', :universal_newline => true
2.1.10 :005?>   )
 => "hey"
~~~

----------------------------------------
Bug #8123: Transcoding exception when using replace along with universal_newline
https://bugs.ruby-lang.org/issues/8123#change-76045

* Author: k776 (Kieran P)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: 1.9.3 and 2.0.0
* Backport: 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
The following can be reproduced on 1.9.3-p385, 1.9.3-p392, and 2.0.0-p0.

  body, charset = "hey", "hey".encoding.to_s
  body = body.encode('UTF-8', charset,
    :invalid => :replace, :undef => :replace,
    :replace => '', :universal_newline => true
  )
  Encoding::ConverterNotFoundError: code converter not found (universal_newline)

However, if you remove ":replace => '', ", then it works as intended.

Seems you can't use the two options together.



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

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>