title: How to upgrade from R16B to 17? list_to_binary breaks if there are Chinese characters inside
body: <p>We are using R16B03-1 and trying to upgrade to R17.</p>
  
  <p><code>iolist_to_binary</code> and <code>list_to_binary</code> breaks if there are Chinese characters inside.</p>
  
  <p>I googled and found following links to explain the problem.</p>
  
  <ol>
  <li><a href="http://www.erlang.org/news/71" rel="nofollow">http://www.erlang.org/news/71</a></li>
  </ol>
  
  <blockquote>
    <p>The default encoding of Erlang files has been changed from ISO-8859-1 to UTF-8. The encoding of XML files has also been changed to UTF-8 </p>
  </blockquote>
  
  <ol start="2">
  <li><a href="http://www.erlang.org/doc/apps/stdlib/unicode_usage.html" rel="nofollow">http://www.erlang.org/doc/apps/stdlib/unicode_usage.html</a></li>
  </ol>
  
  <blockquote>
    <p>Only if a string contains code points &lt; 256, can it be directly converted to a binary by using i.e. erlang:iolist_to_binary/1 or can be sent directly to a port. If the string contains Unicode characters > 255, an encoding has to be decided upon and the string should be converted to a binary in the preferred encoding using unicode:characters_to_binary/{1,2,3}. Strings are not generally lists of bytes, as they were before Erlang/OTP R13. They are lists of characters. Characters are not generally bytes, they are Unicode code points.</p>
  </blockquote>
  
  <p>My question is must we modify all <code>list_to_binary</code> to <code>unicode:characters_to_binary</code>?</p>
  
  <p>Thanks</p>