Project

General

Profile

Bug #17011

Updated by david.drakard (David Drakard) almost 4 years ago

`BigDecimal` `.to_s` returns a `String` in ASCII-8BIT encoding. This is inconvenient in situations where the encoding determines program behaviour, since because it requires an explicit cast, particularly because ASCII-8BIT is a special encoding that implies binary (non-textual) data, it can require an explicit conversion. data. 

 `BigDecimal` `.to_s` should either use the currently active encoding, or it should use US-ASCII like `Integer` `.to_s`. 

 Recreation script: 

 ``` ruby 
 # encoding: utf-8 
 Encoding.default_internal = Encoding::UTF_8 
 Encoding.default_external = Encoding::UTF_8 
 require 'bigdecimal' 
 puts BigDecimal('2').to_s.encoding 
 ``` 

 Desired output: `US-ASCII` or `UTF-8` 

 Actual output: `ASCII-8BIT`

Back