2012-01-03 31 views
9

ユニコードを含む文字列がありますが、UTF-8エンコーディングに変換するにはどうすればいいですか?文字列をUTF8に変換するには?

+1

。 http://stackoverflow.com/questions/497782/how-to-convert-a-string-from-utf8-to-ascii-single-byte-in-c – Bishan

答えて

21

このコードはUTF-8でエンコードされたあなたの文字列とバイト配列を作る:

UTF8Encoding utf8 = new UTF8Encoding(); 
string unicodeString = "Quick brown fox"; 
byte[] encodedBytes = utf8.GetBytes(unicodeString); 
+6

なぜ、 'Encoding.UTF8.GetBytes '新しいエンコーディングではなく新しいエンコーディング? –

+0

@ JesseC.Slicerこのスニペットは、[MicrosoftのUTF8Encodingクラスの例](http://msdn.microsoft.com/en-us/library/system.text.utf8encoding.aspx)からの抜粋です。私は100%確信しているわけではありませんが、これはスレッドセーフであると仮定します(インスタンスメンバーはスレッドセーフであることは保証されていませんが、これは私の推測です)。 – dasblinkenlight

1

は、あなたが、これは箱から出して修正する必要があり、この機能を試してみて、このコードに

string unicodeString = "Quick brown fox"; 
var bytes = new List<byte>(unicodeString); 
     foreach (var c in unicodeString) 
      bytes.Add((byte)c); 
     var retValue = Encoding.UTF8.GetString(bytes.ToArray()); 
2

を試してみてくださいしかし命名規則を修正する必要があるかもしれません。

private string UnicodeToUTF8(string strFrom) 
{ 
byte[] bytSrc; 
byte[] bytDestination; 
string strTo = String.Empty; 

bytSrc = Encoding.Unicode.GetBytes(strFrom); 
bytDestination = Encoding.Convert(Encoding.Unicode, Encoding.ASCII, bytSrc); 
strTo = Encoding.ASCII.GetString(bytDestination); 

return strTo; 
} 
+0

これを使用して文字列を作成します 1.データベースに保存する前にXMLと互換性があります。 2. CSVにエクスポートする前にCSV互換性があります。 – Arvin

1

これは最小限のコードで次のようになります。私はこれがあなたに助けを考える

byte[] bytes = Encoding.Default.GetBytes(myString); 
myString = Encoding.UTF8.GetString(bytes);