Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > перекодирование из Unicode в ANSI


Автор: chaklun 21.5.2004, 21:53
Encoding.Default.GetBytes(mystring.ToCharArray()); возвращает кучку карлючек, как получить корректную сточку в формате ANSI?

Автор: Kurt 22.5.2004, 02:03
Для смены кодировки текста используют пространство имен System.Text.
Там есть такие классы как ASCIIEncoding, UnicodeEncoding etc.
Вот пример, к-й перекодирует строку из UNICODE в ASCII (обрати внимание на потерю некоторых символов при перекодировке..):

C#
Код
using System;
using System.Text;

class ASCIIEncodingExample {
   public static void Main() {
       // The encoding.
       ASCIIEncoding ascii = new ASCIIEncoding();
       
       // A Unicode string with two characters outside the ASCII code range.
       String unicodeString =
           "This Unicode string contains two characters " +
           "with codes outside the ASCII code range, " +
           "Pi (\u03a0) and Sigma (\u03a3).";
       Console.WriteLine("Original string:");
       Console.WriteLine(unicodeString);

       // Save positions of the special characters for later reference.
       int indexOfPi = unicodeString.IndexOf('\u03a0');
       int indexOfSigma = unicodeString.IndexOf('\u03a3');

       // Encode string.
       Byte[] encodedBytes = ascii.GetBytes(unicodeString);
       Console.WriteLine();
       Console.WriteLine("Encoded bytes:");
       foreach (Byte b in encodedBytes) {
           Console.Write("[{0}]", b);
       }
       Console.WriteLine();
       
       // Notice that the special characters have been replaced with
       // the value 63, which is the ASCII character code for '?'.
       Console.WriteLine();
       Console.WriteLine(
           "Value at position of Pi character: {0}",
           encodedBytes[indexOfPi]
       );
       Console.WriteLine(
           "Value at position of Sigma character: {0}",
           encodedBytes[indexOfSigma]
       );

       // Decode bytes back to string.
       // Notice missing Pi and Sigma characters.
       String decodedString = ascii.GetString(encodedBytes);
       Console.WriteLine();
       Console.WriteLine("Decoded bytes:");
       Console.WriteLine(decodedString);
   }
}


Автор: Гость_Сергей 8.7.2004, 17:26
Подскажите пожалуйста, что делать, если нужно на C# строку Unicode содержащую русские буквы перевести в однобайтовую строку в кодировке win1251?



Сергей

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)