From: Perry Smith Date: 2015-09-09T15:05:16-05:00 Subject: [ruby-core:70705] Re: [Ruby trunk - Bug #11519] [Feedback] "#{nil}" produces string as US-ASCII rather than current encoding ���#{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/