Эта статья переведена вручную. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст. |
Перевод
Текст оригинала
|
Использование кодировки Юникод
В приложениях, ориентированных на общую среду исполнения, для преобразования символов из внутреннего представления (Юникод) в другой вид используется кодирование. Для обратного преобразования знаков из внешних кодировок (не Юникод) во внутреннее представление используется декодирование. Пространство имен System.Text располагает рядом классов, позволяющих приложениям кодировать и декодировать символы. Общие сведения об этих классах см. в разделе Общие представления о кодировках.
Стандарт Юникода присваивает каждому символу в каждом поддерживаемом наборе кодовую позицию (номер). UTF– это формат, используемый для кодирования кодовой точки. Стандарт Юникода версии 3.2 использует форматы преобразования (UTF) и другие кодировки, перечисленные в следующей таблице. Для всех кодировок встроенные строки .NET Framework являются собственными строками UTF-16. Дополнительные сведения о символах Юникод см. в описании стандарта на домашней странице Юникода.
Произвольные коллекции чисел (байт или символов) не являются допустимыми строками или коллекциями Юникода. Приложение не может преобразовать массив байтов в формат Юникода и обратно, поэтому он работать не будет. Определенные последовательности символов и кодовых позиций не поддерживаются в Юникод 5.0 и не могут быть преобразованы с помощью кодировок Юникода. Если приложение должно передать данные в двоичном формате, следует использовать базовый 64 или другой формат, предназначенный для этой цели.
Чтобы вернуть требуемый объект кодировки для указанной кодировки, в приложении можно использовать метод GetEncoding. Для преобразования строки Юникода в ее байтовое представление в указанной кодировке используется метод GetBytes.
Приведенный ниже пример кода использует метод GetEncoding необходимого объекта кодировки для конкретной кодовой страницы. Метод GetBytes вызывается для нужного объекта кодировки для преобразования строки Юникода в байтовое представление в требуемой кодировке. На экране будет отображено байтовое представление строки на конкретной кодовой странице.
using System; using System.IO; using System.Globalization; using System.Text; public class Encoding_UnicodeToCP { public static void Main() { // Converts ASCII characters to bytes.// Displays the string's byte representation in the // specified code page.// Code page 1252 represents Latin characters.PrintCPBytes("Hello, World!",1252); // Code page 932 represents Japanese characters.PrintCPBytes("Hello, World!",932); // Converts Japanese characters to bytes.PrintCPBytes("\u307b,\u308b,\u305a,\u3042,\u306d",1252); PrintCPBytes("\u307b,\u308b,\u305a,\u3042,\u306d",932); } public static void PrintCPBytes(string str, int codePage) { Encoding targetEncoding; byte[] encodedChars; // Gets the encoding for the specified code page.targetEncoding = Encoding.GetEncoding(codePage); // Gets the byte representation of the specified string.encodedChars = targetEncoding.GetBytes(str); // Prints the bytes.Console.WriteLine ("Byte representation of '{0}' in Code Page '{1}':", str, codePage); for (int i = 0; i < encodedChars.Length; i++) Console.WriteLine("Byte {0}: {1}", i, encodedChars[i]); } }
Примечание |
|---|
При использовании данного кода в консольном приложении указанные текстовые элементы Юникода могут отображаться неправильно. Поддержка символов Юникода в консольной среде зависит от установленной версии операционной системы Windows. |
Эти методы можно использовать в приложениях ASP.NET для определения кодировки, которую надо использовать для символов ответа.В приложении следует задать значение свойства ContentEncoding значению, возвращенному соответствующим методом.В следующем примере кода показано, как задать HttpResponse.ContentEncoding.
// Explicitly sets the encoding to UTF-8.Response.ContentEncoding = Encoding.UTF8; // Sets ContentEncoding using the name of an encoding.Response.ContentEncoding = Encoding.GetEncoding(name); // Sets ContentEncoding using a code page number.Response.ContentEncoding = Encoding.GetEncoding(codepageNumber);
Для большинства приложений ASP.NET необходимо, чтобы свойство ContentEncoding соответствовало свойству ContentEncoding для отображения текста в кодировке, нужной пользователю.
Дополнительные сведения об использовании кодировок в ASP.NET см. в примере различных кодировок в разделе Примеры решения типичных задач и в примере настройки языка и региональных параметров и кодировки в разделе Примеры использования ASP.NET.
