2012-01-03 290 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); 
相关问题