2011-04-13 16 views
0

リスト内の文字の一部が通常の文字ではないため、C#で "?"が置き換えられますが、どうすればこの問題を回避できますか?C#リストのUnicode文字をロードする

ありがとうございました。

System.IO.StreamReader sr = new System.IO.StreamReader(of.FileName); 

      string xd = sr.ReadToEnd(); 

      string[] qt = xd.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); 

      foreach (string text in qt) 
      { 
       string[] sn = text.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); 

       listSNL.Items.Add(sn[0]); 
       m_Passwords.Add(sn[0], Encoding.ASCII.GetBytes(sn[1])); 
      } 

      sr.Close(); 

これまでに以下の答えはどれも働いていない、それが自動的に文字列に変換されますので、私はsr.ReadToEndから始まり、Unicodeで私のような文字を意味したときにエラーが:£&½

+2

使用しているコードを投稿してください。ユニコード文字は、どこから来ているのか、何をやっているのかによってさまざまな方法で処理できます。 –

+1

ユニコード文字をエスケープしていませんか? http://msdn.microsoft.com/en-us/library/aa664669(v=vs.71).aspx –

答えて

2

を、あなたは試してみましたこの1と

m_Passwords.Add(sn[0], Encoding.ASCII.GetBytes(sn[1])); 

:この行を置き換える

m_Passwords.Add(sn[0], Encoding.Unicode.GetBytes(sn[1])); 
1

Encoding.UnicodeではなくEncoding.UTF8を使用することもできます。ほとんどの文字が< = 127の場合は、必要なバイト数が少なくなります。

関連する問題