2012-01-03 23 views
9

Bazı unicode içeren bir dizilim var, bunu UTF-8 kodlamasına nasıl dönüştürebilirim?Dizgi UTF8'e nasıl dönüştürülür?

+1

ben bu size yardımcı olur düşünüyorum. http://stackoverflow.com/questions/497782/how-to-convert-a-string-from-utf8-to-ascii-single-byte-in-c – Bishan

cevap

21

Bu pasajı UTF-8 olarak kodlanmış dizenizle bayt dizisi yapar: Bu fonksiyonu deneyin

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

Neden sadece Encoding.UTF8.GetBytes kullanmıyorsunuz? '' başka bir kodlayıcı yeni '' yerine? –

+0

@ JesseC.Slicer Bu snippet [Microsoft'un UTF8Encoding sınıfı için örnekleri] (http://msdn.microsoft.com/en-us/library/system.text.utf8encoding.aspx) 'den biridir. % 100'ü neden bu şekilde yapmayı tercih ettikleri konusunda emin değilim, ama bu iş parçacığı güvenliği için olduğunu düşünürdüm (örnek elemanların iş parçacığı güvenli olduğu garanti edilmiyor, ancak bu sadece benim tahminimdir). – dasblinkenlight

1

deneyin bu kodu

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

için, bu, kutunun dışında düzeltmek gerekir Ancak adlandırma kurallarını düzeltmek gerekebilir.

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

Dizelerinizi yapmak için bunu kullanın 1. Veritabanına kaydetmeden önce XML uyumlu, 2. (veya) CSV'ye aktarmadan önce CSV uyumlu – Arvin

1

Bu minimum kod ile olmalıdır:

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