2012-01-03 81 views

Trả lời

21

đoạn này làm cho một mảng byte với chuỗi của bạn được mã hóa theo UTF-8:

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

Tại sao không chỉ sử dụng 'Encoding.UTF8.GetBytes 'thay vì' new'ing lên một bộ mã hóa khác? –

+0

@ JesseC.Slicer Đoạn mã này là từ một trong các ví dụ của Microsoft cho lớp UTF8Encoding (http://msdn.microsoft.com/en-us/library/system.text.utf8encoding.aspx). Tôi không chắc chắn 100% lý do tại sao họ chọn làm theo cách này, nhưng tôi cho rằng đó là sự an toàn của luồng (họ đề cập rằng các thành viên thể hiện không được đảm bảo là luồng an toàn, nhưng đây chỉ là phỏng đoán của tôi). – dasblinkenlight

1

thử mã này

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

Hãy thử chức năng này, điều này sẽ sửa chữa ra khỏi hộp, bạn có thể cần sửa các quy ước đặt tên.

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

Sử dụng tính năng này để tạo các chuỗi của bạn 1. Tương thích XML trước khi lưu vào cơ sở dữ liệu, 2. (hoặc) CSV tương thích trước khi xuất sang CSV – Arvin

1

này nên với mã tối thiểu:

byte[] bytes = Encoding.Default.GetBytes(myString); 
myString = Encoding.UTF8.GetString(bytes); 
Các vấn đề liên quan