Issue #5855 has been updated by John Firebaugh.


Unless MRI has some non-standard definition of the term "codepoint", your second statement is incorrect. In US-ASCII, the codepoint 0x80 does not exist.

IMO, any operation that attempts to produce a US-ASCII string containing 0x80 should either fail (like "\u{80}".encode("US-ASCII")) or promote to ASCII-8BIT (like "".encode("US-ASCII") << 128.chr). So I believe the middle two examples are incorrect.
----------------------------------------
Bug #5855: inconsistent treatment of 8 bit characters in US-ASCII
https://bugs.ruby-lang.org/issues/5855

Author: John Firebaugh
Status: Rejected
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin10.8.0]


=begin
Does Ruby allow 8 bit characters (127-255) in a US-ASCII encoded string, or not?

   "\u{80}".encode("US-ASCII")      #=> Encoding::UndefinedConversionError
   0x80.chr("US-ASCII")             #=> "\x80" (US-ASCII encoding)
   "".encode("US-ASCII") << 128     #=> "\x80" (US-ASCII encoding)
   "".encode("US-ASCII") << 128.chr #=> "\x80" (ASCII-8BIT encoding)
=end



-- 
http://redmine.ruby-lang.org