Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Смена кодировки Добавлено: 09.11.03 15:45  

Автор вопроса:  Aracon | Web-сайт: aracon-studios.com | ICQ: 221881915 

Скажите, какие есть функции для смен кодировки текста, как в браузере? То есть нужно переводить не только из DOS в Win, но и из KOI, а возможно, и из ISO.

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 10.11.03 10:10
Используй связку двух функций:

Функция MutiByteToWideChar относится к разделу строковых функций
Windows API. Преобразует строку ANSI или DBCS в Unicode. В ВБ
используется без проблем. Функция аналогична встроенной StrConv
(которой проще пользоваться).

Параметры:

CodePage - Long - идентификатор кодовой страницы, используемой
для преобразования, или константа с префиксом
CPP_???
dwFlags - Long - комбинация следующих констант:
MB_PRECOMPOSED: по возможности преобразовать
составные символы (например, буква с
диакритическим знаком) в один символ.
Используется по умолчанию.
MB_COMPOSED: оставить составные символы в виде
двух кодов.
MB_ERR_INVALID_CHARS: если при вводе
обнаруживается недопустимый символ, вызов
функции завершается неудачей.
MB_USEGLYPHS: по возможности использовать
глифовые символы вместо управляющих.
IpMultiByteStr - String - строка ANSI или DBCS
chhMultiByte - Long - длина строки IpMultiByteStr. -1 для того, чтобы
длина строки вычислялась автоматически.
IpWideCharStr - Long - адрес приемного буфера для преобразованной
строки Unicode. Можно воспользоваться строковым
параметром, но дополнительные преобразования,
применяемые в ВБ к строкам, могут стать
причиной ошибок. Буфер должен быть отличным от
IpMultiByteStr
cchWideChar - Long - длина буфера IpWideCharStr. Ноль для получения
необходимой длины буфера.

Возвращаемое значение: Long - количество символов, записанных
IpWideCharStr, или необходимая длина буфера,
если параметр cchWideChar равен нулю. Ноль в
случае ошибки. GetLastError возвращает
следующие коды ошибок:
ERROR_INSUFFICIENT_BUFFER,
ERROR_INVALID_PARAMETR, ERROR_INVALID_FLAGS,
ERROR_NO_UNICODE_TRANSLATION.
Платформа: Windows 95/Windows NT



Функция WideCharToMultiByte относится к разделу строковых функций.
Функция преобразует заданную строку Unicode в ANSI или DBCS на
основании заданной кодовой страницы. В ВБ используется без проблем.
Функция аналогична встроенной StrConv (которой проще пользоваться).

Параметры:
CodePage - Long - идентификатор кодовой страницы, используемой для
преобразования, или константа с префиксом CPP_???.
dwFlags - Long - ноль или комбинация следующих констант:
WC_COMPOSITECHECK - по возможности преобразовать
составные символы (например, буква с диакритическим
знаком) в один символ.
если флаг WC_COMPOSITECHECK задан, то следующие
константы указывают как поступать с составными
символами, которые не удается преобразовать в один
символ:
WC_DISCARDNS - удалять символы не имеющие ширины
(например, диакритические знаки).
WC_SEPCHARS - включить в итоговую строку оба символа.

IpMultiByteStr - String - приемный строковой буфер, заполняемый
строкой ANSI или DBCS

chhMultiByte - Long - длина строки IpMultiByteStr. 0 для того, чтобы
получить необходимую длину буфера..

IpWideCharStr - Long - адрес исходного буфера Unicode. Можно
воспользоваться строковым параметром, но дополнительные
преобразования, применяемые в ВБ к строкам, могут стать причиной
ошибок. Буфер должен быть отличным от IpMultiByteStr

cchWideChar - Long - длина буфера IpWideCharStr в символах (не в
байтах!). -1 для того, чтобы необходимая длина
буфера вычислялась автоматически.

IpDefaultChar - String - первый символ этой строки используется для
замены всех символов, которые не удалось преобразовать, vbNullString
для использования системного символа по
умолчанию.

IpUsedDefaultChar - Long - заполняется ненулевым значением, если один
или несколько символов исходной строки не
удалось преобразовать в ANSI или DBCS.

Возвращаемое значение: Long - количество символов, записанных
IpMultiByteStr, или необходимая длина буфера,
если параметр cchMultiByte равен нулю. Ноль в
случае ошибки. GetLastError возвращает
следующие коды ошибок:
ERROR_INSUFFICIENT_BUFFER,
ERROR_INVALID_PARAMETR, ERROR_INVALID_FLAGS.
Платформа: Windows 95/Windows NT

Ответить

Номер ответа: 2
Автор ответа:
 Aracon



ICQ: 221881915 

Вопросов: 16
Ответов: 28
 Web-сайт: aracon-studios.com
 Профиль | | #2
Добавлено: 14.11.03 20:26

Спасибо. А где взять идентификаторы кодовых таблиц? Я поискал через API viewer, констант не нашел.

Ты не мог бы пример кинуть?

Ответить

Номер ответа: 3
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #3
Добавлено: 15.11.03 09:35
Из того, что мне известно:

Central European (DOS)852
Central European Alphabet (Windows)1250
Central European Alphabet (ISO)28592
Cyrillic Alphabet (DOS)866
Cyrillic Alphabet (Windows)1251
Cyrillic Alphabet (ISO)28595
Cyrillic Alphabet (KOI8-R)20866
Ukrainian Alphabet (KOI8-RU)21866
Latin 3 Alphabet (ISO)28593
Western Alphabet1252
Baltic Alphabet (Windows)1257
Baltic Alphabet (ISO)28594
Greek Alphabet (Windows)1253
Greek Alphabet (ISO)28597
Turkish Alphabet1254
Arabic Alphabet (Windows)1256
Arabic Alphabet (ISO)28596
Hebrew (DOS)862
Hebrew Alphabet (Windows)1255

Пример качай здесь:

http://vbnet.ru/Coding.zip

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам