* При перепечатке материалов ссылка на 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

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

Лямбда-выражения
Формы, элементы управления и меню
Применение наследования с формами
Доступ к «плоским» файлам
Архитектура данных ADO.NET
Структура .NET-приложений
Сборщик мусора
Применение компонента HelpProvider
Активация и деактивация команд меню
Перегрузка членов
Развертывание приложений с помощью XCOPY
Применение трассировочных переключателей
Ссылки на внешние библиотеки
Окна Locals, Autos и Watch
Перечисления CTS
| .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


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

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