2013-09-02 2 views
1

У меня есть имя файла testtäöüßÄÖÜ. Я хочу конвертировать в UTF-8 с помощью C#.UtF-8 дает дополнительную строку на немецком языке

string test ="testtäöüß"; 
var bytes = new List<byte>(test.Length); 
     foreach (var c in test) 
      bytes.Add((byte)c); 
     var retValue = Encoding.UTF8.GetString(bytes.ToArray()); 

после запуска этого кода мой вывод: 'testt mit Umlaute äöü? X. где mit Umlaute является дополнительным текст.

Может кто-нибудь мне помочь?

Заранее спасибо.

+1

Это имя файла или строковое значение? Вы тестируете «testtäöüßÄÖÜ» или «testtäöüß»? Если я запускаю ваш код как есть, 'retValue' является' testt '. Что-то подсказывает мне, что это не ваш фактический код ... – Corak

ответ

1

Я думаю, Цзэн означает следующее

Взято с: http://www.chilkatsoft.com/p/p_320.asp

 System.Text.Encoding utf_8 = System.Text.Encoding.UTF8; 

     // This is our Unicode string: 
     string s_unicode = "abcéabc"; 

     // Convert a string to utf-8 bytes. 
     byte[] utf8Bytes = System.Text.Encoding.UTF8.GetBytes(s_unicode); 

     // Convert utf-8 bytes to a string. 
     string s_unicode2 = System.Text.Encoding.UTF8.GetString(utf8Bytes); 

     MessageBox.Show(s_unicode2); 
2

Вы не можете этого сделать. Вы не можете передавать символ UTF-8 в байт. UTF-8 для чего-нибудь кроме ASCII требует, по меньшей мере, два байта, байт может не может хранить этот

Вместо создания списка, используйте

byte[] bytes = System.Text.Encoding.UTF8.GetBytes (test);