title: String.replace function returning non-string output
body: <p>So I have this string I want to remove non alphanumeric characters from:</p>
  
  <pre><code>my_string = "¿Habla usted Inglés, por favor?"
  </code></pre>
  
  <p>Basically I want to get rid of the ?, ¿ and , in this case. I then split the words into a list and do various kickass things with each one.</p>
  
  <p>I am using </p>
  
  <pre><code>String.replace(my_string, my_regex, "")
  String.split(" ")
  </code></pre>
  
  <p>to do the work. I have two different regex strings I'm attempting to use:</p>
  
  <pre><code>my_regex = ~r/[\_\.,:;\?¿¡\!&amp;@$%\^]/
  my_regex = ~r/[[:punct:]]/
  </code></pre>
  
  <p>The first one works like a charm. I end up with:</p>
  
  <pre><code>["habla", "usted", "inglés"]
  </code></pre>
  
  <p>The second one removes the correct characters but I end up with:</p>
  
  <pre><code>[&lt;&lt;194, 104, 97, 98, 108, 97&gt;&gt;, "usted", &lt;&lt;105, 110, 103, 108, 195, 115&gt;&gt;]
  </code></pre>
  
  <p>At first I thought the strange output was just because of the non-ascii alphas being dumped to the console. But when I attempt to match with the expected list of strings it fails.</p>
  
  <p>Whatever the case, I just don't understand why the two different regex result in different output in terms of the strings in the list.</p>
  
  <p>Here is code that can be run in iex to succinctly reproduce my issue:</p>
  
  <pre><code>a = ~r/[\_\.,:;\?¿¡\!&amp;@$%\^]/
  b = ~r/[[:punct:]]/
  y = "¿Habla usted Inglés, por favor?"
  String.replace(y, a, "")  
      # -&gt;  "Habla usted Inglés por favor"
  String.replace(y, b, "")
      # -&gt; &lt;&lt;194, 72, 97, 98, 108, 97, 32, 117, 115, 116, 101, 100, 32, 73, 110, 103, 108, 195, 115, 32, 112, 111, 114, 32, 102, 97, 118, 111, 114&gt;&gt;
  </code></pre>