Bug #17011

BigDecimal .to_s should not use ASCII-8BIT

Added by david.drakard (David Drakard) about 1 month ago. Updated 29 days ago.

Target version:
ruby -v:
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]


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

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

Recreation script:

# 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


Updated by david.drakard (David Drakard) about 1 month ago

  • Description updated (diff)

Updated by nobu (Nobuyoshi Nakada) about 1 month ago

  • Description updated (diff)

Could you submit this to

Updated by byroot (Jean Boussier) about 1 month ago

Actually, it's already been fixed upstream:

Maybe the Ruby spec part of my PR is still useful. I'll submit it to

Updated by Eregon (Benoit Daloze) about 1 month ago

How should we proceed to include that fix in CRuby master?

Updated by Eregon (Benoit Daloze) 29 days ago

  • Assignee set to nobu (Nobuyoshi Nakada)
  • Status changed from Open to Closed

Also available in: Atom PDF