title: Encrypting a string that contains unicode results in unrecognized characters
body: <p>I'm trying to encrypt a string in C#: </p>
  
  <pre><code>static public string Encrypt(char[] a)
  {
      for (int i = 0; i &lt; a.Length; i++)
      {
          a[i] -= (char)(i + 1);
          if (a[i] &lt; '!')
          {
              a[i] += (char)(i + 20);
          }
      }
      return new string(a);
  }
  </code></pre>
  
  <p>Now, when I put in this string: </p>
  
  <pre><code>"Qui habite dans un ananas sous la mer?".
  </code></pre>
  
  <p>The encryption comes out as:</p>
  
  <pre><code>`Psf3c[[ak[3XT`d3d\3MYKWIZ3XSXU3L@?JAMR`
  </code></pre>
  
  <p>There's an unrecognizable character in there, after the @. I don't know how it got there, and I don't know why.</p>
  
  <p>If I try to decrypt it (using this method:)</p>
  
  <pre><code>static public string Decrypt(char[] a)
  {
      for (int i = 0; i &lt; a.Length; i++)
      {
          a[i] += (char)(i + 1);
          if ((a[i] - 20) - i &lt;= '!')
          {
             a[i] -= (char)(i + 20);
          }
      }
      return new string(a);
  }
  </code></pre>
  
  <p>This is the (incorrect) output: </p>
  
  <blockquote>
    <p>Qui habite dans un ananas sous laamerx.</p>
  </blockquote>
  
  <p>How do I allow the encryption routine to access unicode characters?</p>