* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Преобразование кодировки символов
8 февраля 2009

В .NET Framework для представления символов используется кодировка Unicode
UTF-16, ставшая общепринятым стандартом. Она предоставляет уникальный код
для каждого из более 65000 символов, существующих на данный момент, при этом
остаются свободные коды еще для миллиона символов. Все это делает Unicode иде-
альной кодировкой для многоязычного содержимого.
До появления Unicode необходимость поддержки разных языков вынуждала раз-
работчиков применять для внутреннего представления данных различные кодиров-
ки. В результате данные, отформатированные для различных культур, представле-
ны в самых разных кодировках: однобайтовой для европейских языков, двухбайто-
вой для азиатских и двунаправленной для ближневосточных языков. Это затрудня-
ет обмен данными между культурами и еще больше — разработку приложений с
многоязычным интерфейсом.
.NET Framework позволяет преобразовывать данные из унаследованных форма-
тов в формат Unicode, а при взаимодействии с унаследованными компонентами —
из Unicode в унаследованные форматы.
Преобразования выполняет класс Encoding из пространства имен System. Text. Эк-
земпляр этого класса нельзя создать напрямую, но можно получить посредством
метода Encoding. GetEncoding, объявленного с модификатором доступа Shared (static).
Он возвращает объект кодировки, представляющий кодовую страницу, например:
Visual Basic .NET
Этот призер предполагает наличие оператора Imports System.Text
Din myEncoding As Encoding
Кодовая страница 932 представляет японские иероглифы.
myEncoding = Encoding.GetEncoding(932)
Visual C#
// Этот пример предполагает наличие оператора using System.Text
Encoding myEncoding;
// Кодовая страница 932 представляет японские иероглифы,
myEncoaing = Encoding.GetEncoding(932);
Созданный экземпляр класса Encoding годится для преобразования символов из
этой кодировки в Unicode и обратно. Чтобы выполнить преобразование существу-
ющих данных в Unicode, вызовите метод Encoding. Convert, передав ему объекты ис-
ходной и целевой кодировок, а также массив байт, представляющий данные в ис-
ходной кодировке. Этот метод возвращает массив байт, представляющих данные в
целевой кодировке. Для преобразования в Unicode в качестве объекта целевой ко-
дировки следует передать экземпляр класса System. Text. UnicodeEncoding. Следующий
пример демонстрирует преобразование данных из кодовой страницы 932 в Unicode:
Visual Basic .NET
Этот пример предполагает наличие оператора Imports System.Text.
Исходные данные представлены массивом типа Byte.
хранящимся в переменной myData,
Dim tgtDataO As Byte
Dim srcEncoding As Encoding
Dim tgtEncoding As New UnicodeEncodingO
Кодовая страница 932 представляет японские иероглифы.
srcEncoding - Encoding.GetEncoding(932)
Теперь переменная tgtData содержит массив байтов, идентичный
массиву myData, но закодированный в формате Unicode.
tgtData - Encoding.Convert(srcEncoding, tgtEncoding, myData)
Visual C#
// Этот пример предполагает наличие оператора using System.Text,
// Исходные данные представлены массивом типа Byte,
// хранящимся в переменной myData.
byte[] tgtData;
Encoding srcEncoding;
UnicodeEncoding tgtEncoding = new UnicodeEncodingO;
// Кодовая страница 932 представляет японские иероглифы.
srcEncoding - Encoding.GetEncoding(932);
// Теперь переменная tgtData содержит массив байтов, идентичный
// массиву myData, но закодированный в формате Unicode.
tgtData - Encoding.Convert(srcEncoding, tgtEncoding, myData);
Чтобы преобразовать данные в унаследованном формате в массив байтом для
дальнейшей обработки, вызовите метод GetBytes, передав ему объект исходной ко-
дировки — в результате создается на основе символьного или строкового массива
создается массив байтов:
Visual Basic .NET
' Этот пример предполагает наличие оператора Imports System.Text.
1 Переменная myString содержит данные в унаследованном формате.
Dim myEncoding As Encoding
myEncoding - Encoding.GetEncoding(932)
Dim myBytes() As Byte
myBytes - myEncoding.GetBytes{myString)
Visual C#
// Этот пример предполагает наличие оператора using System.Text.
// Переменная myString содержит данные в унаследованном формате.
Encoding myEncoding;
myEncoding = Encoding.GetEncoding(932);
Byte[] myBytes;
myBytes = myEncoding.GetBytes(myString);
Метод GetChars позволяет преобразовать массив байтов в символьный массив,
например:
Visual Basic .NET
' Этот пример предполагает наличие оператора Imports System.Text.
1 Исходные данные находятся в массиве myBytes,
Dim myEncoding As New UnicodeEncoaingO
Dim myChars() As Char
myChars = myEncoding.GetChars(myBytes)
Visual C#
// Этот пример предполагает наличие оператора using System.Text.
// Исходные данные находятся в массиве myBytes.
UnicodeEncoding myEncoding = new UnicodeEncodingO;
char[] myChars;
myChars = myEncoding.GetChars(myBytes);

Теги: .NET

Статьи по теме:

Towards Cleaner Code, A C# Asynchronous Helper
Защита приложения
Обзор .NET Framework
Замещение членов базового класса в Visual Basic .NET
Извлечение и обновление данных с помощью объектов DataAdapter и DataSet
Конфигурирование защиты по правам доступа к коду
Создание перегруженных методов
Реализация полиморфизма через наследование
Архитектура данных ADO.NET
Абстрактные классы и члены
Интерфейсы как средство достижения полиморфизма
Двоичные файлы .NET
Реализация специальных возможностей на этапе проектирования
Сокрытие членов базового класса в Visual C#
Редакторы свойств программы установки
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31


     



Данный сайт или домен продается

© 2009 Seoliga.ru | .NET | Преобразование кодировки символов. Регион сайта: Москва и Санкт-Петербург