https://bugs.ruby-lang.org/
https://bugs.ruby-lang.org/favicon.ico?1711330511
2013-12-28T19:41:03Z
Ruby Issue Tracking System
Ruby master - Bug #9314: String#encode method raises TypeError when called with Encoding::UTF_16
https://bugs.ruby-lang.org/issues/9314?journal_id=43926
2013-12-28T19:41:03Z
nobu (Nobuyoshi Nakada)
nobu@ruby-lang.org
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Rejected</i></li></ul><p>There is no real encoding, "UTF-16".<br>
UTF-{16,32} encodings need endianness.</p>
Ruby master - Bug #9314: String#encode method raises TypeError when called with Encoding::UTF_16
https://bugs.ruby-lang.org/issues/9314?journal_id=43927
2013-12-28T19:54:56Z
krists.ozols (Krists Ozols)
krists.ozols@gmail.com
<ul></ul><p>nobu (Nobuyoshi Nakada) wrote:</p>
<blockquote>
<p>There is no real encoding, "UTF-16".<br>
UTF-{16,32} encodings need endianness.</p>
</blockquote>
<p>In that case shouldn't it raise error when called with "UTF-16" string as it does with something random(like "text".encode("not-real-encoding"))?</p>
Ruby master - Bug #9314: String#encode method raises TypeError when called with Encoding::UTF_16
https://bugs.ruby-lang.org/issues/9314?journal_id=43928
2013-12-28T20:25:29Z
krists.ozols (Krists Ozols)
krists.ozols@gmail.com
<ul></ul><p>More examples:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="o">>></span> <span class="s2">"A"</span><span class="p">.</span><span class="nf">encode</span><span class="p">(</span><span class="no">Encoding</span><span class="o">::</span><span class="no">UTF_16</span><span class="p">.</span><span class="nf">to_s</span><span class="p">).</span><span class="nf">bytes</span>
<span class="o">=></span> <span class="p">[</span><span class="mi">254</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">65</span><span class="p">]</span>
<span class="o">>></span> <span class="s2">"A"</span><span class="p">.</span><span class="nf">encode</span><span class="p">(</span><span class="no">Encoding</span><span class="o">::</span><span class="no">UTF_16BE</span><span class="p">).</span><span class="nf">bytes</span>
<span class="o">=></span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">65</span><span class="p">]</span>
<span class="o">>></span> <span class="s2">"A"</span><span class="p">.</span><span class="nf">encode</span><span class="p">(</span><span class="no">Encoding</span><span class="o">::</span><span class="no">UTF_16LE</span><span class="p">).</span><span class="nf">bytes</span>
<span class="o">=></span> <span class="p">[</span><span class="mi">65</span><span class="p">,</span> <span class="mi">0</span><span class="p">]</span>
</code></pre>
<p>There is even a side-effect. After using <code>UTF_16BE</code> suddenly <code>UTF_16</code> works:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="err">$</span> <span class="n">irb</span>
<span class="o">>></span> <span class="s2">"some_text"</span><span class="p">.</span><span class="nf">encode</span><span class="p">(</span><span class="no">Encoding</span><span class="o">::</span><span class="no">UTF_16</span><span class="p">).</span><span class="nf">bytes</span>
<span class="no">TypeError</span><span class="p">:</span> <span class="n">no</span> <span class="n">implicit</span> <span class="n">conversion</span> <span class="n">of</span> <span class="no">Encoding</span> <span class="n">into</span> <span class="no">String</span>
<span class="n">from</span> <span class="p">(</span><span class="n">irb</span><span class="p">):</span><span class="mi">1</span><span class="ss">:in</span> <span class="sb">`encode'
from (irb):1
from /Users/krists/.rvm/rubies/ruby-2.1.0/bin/irb:11:in `</span><span class="o"><</span><span class="n">main</span><span class="o">></span><span class="err">'</span>
<span class="o">>></span> <span class="s2">"some_text"</span><span class="p">.</span><span class="nf">encode</span><span class="p">(</span><span class="no">Encoding</span><span class="o">::</span><span class="no">UTF_16BE</span><span class="p">).</span><span class="nf">bytes</span>
<span class="o">=></span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">115</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">111</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">109</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">101</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">95</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">116</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">101</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">120</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">116</span><span class="p">]</span>
<span class="o">>></span> <span class="s2">"some_text"</span><span class="p">.</span><span class="nf">encode</span><span class="p">(</span><span class="no">Encoding</span><span class="o">::</span><span class="no">UTF_16</span><span class="p">).</span><span class="nf">bytes</span>
<span class="o">=></span> <span class="p">[</span><span class="mi">254</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">115</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">111</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">109</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">101</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">95</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">116</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">101</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">120</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">116</span><span class="p">]</span>
</code></pre>
Ruby master - Bug #9314: String#encode method raises TypeError when called with Encoding::UTF_16
https://bugs.ruby-lang.org/issues/9314?journal_id=43933
2013-12-29T06:06:49Z
nobu (Nobuyoshi Nakada)
nobu@ruby-lang.org
<ul><li><strong>Status</strong> changed from <i>Rejected</i> to <i>Open</i></li></ul>
Ruby master - Bug #9314: String#encode method raises TypeError when called with Encoding::UTF_16
https://bugs.ruby-lang.org/issues/9314?journal_id=43963
2013-12-30T18:34:24Z
nobu (Nobuyoshi Nakada)
nobu@ruby-lang.org
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Closed</i></li><li><strong>% Done</strong> changed from <i>0</i> to <i>100</i></li></ul><p>This issue was solved with changeset r44462.<br>
Krists, thank you for reporting this issue.<br>
Your contribution to Ruby is greatly appreciated.<br>
May Ruby be with you.</p>
<hr>
<p>encoding.c: mask dummy flags</p>
<ul>
<li>encoding.c (<code>must_encindex</code>, <code>rb_enc_from_index</code>, <code>rb_obj_encoding</code>): mask<br>
encoding index and ignore dummy flags. <a href="/issues/9314">[ruby-core:59354]</a> [Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: String#encode method raises TypeError when called with Encoding::UTF_16 (Closed)" href="https://bugs.ruby-lang.org/issues/9314">#9314</a>]</li>
</ul>
Ruby master - Bug #9314: String#encode method raises TypeError when called with Encoding::UTF_16
https://bugs.ruby-lang.org/issues/9314?journal_id=44965
2014-02-05T04:01:02Z
usa (Usaku NAKAMURA)
usa@garbagecollect.jp
<ul><li><strong>Backport</strong> changed from <i>1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN</i> to <i>1.9.3: DONTNEED, 2.0.0: DONTNEED, 2.1: REQUIRED</i></li></ul>
Ruby master - Bug #9314: String#encode method raises TypeError when called with Encoding::UTF_16
https://bugs.ruby-lang.org/issues/9314?journal_id=45346
2014-02-21T14:54:09Z
naruse (Yui NARUSE)
naruse@airemix.jp
<ul><li><strong>Backport</strong> changed from <i>1.9.3: DONTNEED, 2.0.0: DONTNEED, 2.1: REQUIRED</i> to <i>1.9.3: DONTNEED, 2.0.0: DONTNEED, 2.1: DONE</i></li></ul><p>r45083.</p>