2012-01-03 248 views
9

我有一個字符串包含一些unicode,我如何將它轉換爲UTF-8編碼?如何將字符串轉換爲UTF8?

+1

我認爲這可以幫助你。 http://stackoverflow.com/questions/497782/how-to-convert-a-string-from-utf8-to-ascii-single-byte-in-c – Bishan 2012-01-03 04:04:45

回答

21

這段代碼使得UTF-8編碼與您的字符串的字節數組:

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

爲什麼不直接使用'Encoding.UTF8.GetBytes而不是「新增」另一個編碼器? – 2012-01-03 04:10:44

+0

@ JesseC.Slicer此片段來自[Microsoft的UTF8Encoding類示例](http://msdn.microsoft.com/en-us/library/system.text.utf8encoding.aspx)。我不是100%確定他們爲什麼選擇這樣做,但我認爲這是爲了線程安全(他們提到實例成員不保證是線程安全的,但這只是我的猜測)。 – dasblinkenlight 2012-01-03 04:17:18

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 2015-10-16 13:53:32

1

這應該是用最少的代碼:

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