From: usa@... Date: 2015-12-08T02:33:39+00:00 Subject: [ruby-core:71927] [Ruby trunk - Feature #11785] [Open] add `encoding:` optional argument to `String.new` Issue #11785 has been reported by Usaku NAKAMURA. ---------------------------------------- Feature #11785: add `encoding:` optional argument to `String.new` https://bugs.ruby-lang.org/issues/11785 * Author: Usaku NAKAMURA * Status: Open * Priority: Normal * Assignee: ---------------------------------------- I propose to add `encoding:` optional argument to `String.new`. Ruby doesn't have the syntax to specify the encoding of a string literal. So we're using `String#force_encoding` for the purpose when writing m17n script, just like: ~~~Ruby str = "\xA4\xA2".force_encoding('euc-jp') ~~~ But when using `frozen-string-literal: true`, `force_encoding` to literals raise RuntimeError. So, we must write like: ~~~Ruby str = "\xA4\xA2".dup.force_encoding('euc-jp') ~~~ or, if don't prefer `dup`, ~~~Ruby str = String.new("\xA4\xA2").force_encoding('euc-jp') ~~~ but these are very unshapely. To begin with, using `force_encoding` would be the cause of the unshapliness. Therefore, I propose `encoding:` optional argument of `String.new`. If it's available, we can write: ~~~Ruby str = String.new("\xA4\xA2", encoding: 'euc-jp') ~~~ This was proposed at the developer meeting on the last August and was generally favorably accepted (in my impression), but was forgotten after it. -- https://bugs.ruby-lang.org/