Feature #8848

Syntax for binary strings

Added by duerst (Martin Dürst) over 6 years ago. Updated over 5 years ago.

Target version:


In commit 37486, Yui (Naruse) added a String#b method as proposed in

String#b was added to allow easy generation of binary strings; this became necessary in particular after the source file encoding was changed to UTF-8.

However, as also recognized in, in the long term (ideally starting with Ruby 2.1) it would be better to make binary strings available as part of Ruby syntax.

One reason for this efficiency. String#b creates a duplicate object, which is not at all necessary for the frequent use case of String literals.

Another reason is encoding validity. To be able to e.g. create a "\xFF" binary string, with String#b in an UTF-8 source context, it is necessary to allow "\xFF" (temporarily at least) as an (actually invalid) UTF-8 string. This may be difficult for some implementations, and isn't desirable in general.

Regarding syntax, there are mainly two solutions:

1) a '%b' prefix
2) a 'b' suffix

The preferable syntax depends on the overall future approach of Ruby to String literal suffixes (see

Related issues

Related to Ruby master - Feature #10391: Provide %eISO-8859-1'string \xAA literal' string literals with explicit encodingOpen10/16/2014Actions

Also available in: Atom PDF