[ruby-core:70705] Re: [Ruby trunk - Bug #11519] [Feedback] "#{nil}" produces string as US-ASCII rather than current encoding

From: Perry Smith <pedzsan@...>
Date: 2015-09-09 20:05:16 UTC
List: ruby-core #70705
“#{nil}”.encoding != ‘UTF-8’ and “#{bar}#{foo}”.encoding != ‘UTF-8’ despite foo being UTF-8 and the encoding of the source file and hence the “ … “ string within the source file being UTF-8.

> On Sep 9, 2015, at 12:25 PM, nobu@ruby-lang.org wrote:
> 
> Issue #11519 has been updated by Nobuyoshi Nakada.
> 
> Description updated
> Status changed from Open to Feedback
> 
> What's and why wrong?
> 
> ----------------------------------------
> Bug #11519: "#{nil}" produces string as US-ASCII rather than current encoding
> https://bugs.ruby-lang.org/issues/11519#change-54094
> 
> * Author: Perry Smith
> * Status: Feedback
> * Priority: Normal
> * Assignee: 
> * ruby -v: ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]
> * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
> ----------------------------------------
> ~~~ruby
> #! /usr/bin/env ruby
> # encoding: utf-8
> 
> puts "Ruby version: #{RUBY_VERSION}"
> puts "__ENCODING__ = #{__ENCODING__}"
> puts "hello".encoding
> foo = "hello"
> puts "#{foo}".encoding
> puts "#{"hello"}".encoding
> bar = nil
> puts "#{bar}".encoding
> puts "#{nil}".encoding
> puts "#{bar}#{foo}".encoding
> ~~~
> 
> The output for this on all versions of ruby that I have except 1.9.1 is this:
> 
> ~~~
> Ruby version: 2.2.3
> __ENCODING__ = UTF-8
> UTF-8
> UTF-8
> UTF-8
> US-ASCII
> US-ASCII
> US-ASCII
> ~~~
> 
> It is the last part that gave me grief.  Rails `content_for` used such a construct so all my content was being converted to US-ASCII and sometimes were error off.
> 
> It seems to me the `"#{ ... }"` string should be utf-8 and so anything inserted into it should be converted to utf-8 so `"#{nil}"` should be utf-8 -- not US-ASCII.
> 
> 
> 
> 
> -- 
> https://bugs.ruby-lang.org/

In This Thread

Prev Next