Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Basic / VBA


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Гаряка Асмик
Статус: Профессор
Рейтинг: 6009
∙ повысить рейтинг »
Vasiliy83
Статус: Профессионал
Рейтинг: 2115
∙ повысить рейтинг »
Megaloman
Статус: Профессор
Рейтинг: 1619
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Basic/VBA

Номер выпуска:1056
Дата выхода:18.12.2010, 17:30
Администратор рассылки:Калашников О.А. (Руководитель)
Подписчиков / экспертов:197 / 86
Вопросов / ответов:1 / 1

Вопрос № 181310: Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос: В программе на VB6 имется текстовая информация в кодировке windows1251 (задействован контрол RichTextBox, но это не принципиально) . Задача - сохранить эту информацию ка...



Вопрос № 181310:

Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос:
В программе на VB6 имется текстовая информация в кодировке windows1251 (задействован контрол RichTextBox, но это не принципиально) .
Задача - сохранить эту информацию как простой текст (.txt) в текстовый файл с кодировкой UTF-8
Подчеркиваю, что именно UTF-8 а не юникод...

Отправлен: 13.12.2010, 17:06
Вопрос задал: Perkussi (Посетитель)
Всего ответов: 1
Страница вопроса »


Отвечает PsySex (Специалист) :
Здравствуйте, Perkussi!
Решение найдено на одном из форумов.
Код:
Option Explicit
Private Const CP_UTF8 = 65001
Private Const CP_ACP = 0
Private Declare Function GetACP Lib "Kernel32" () As Long
Private Declare Function WideCharToMultiByte Lib "Kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, lpUsedDefaultChar As Long) As Long
Private Declare Function MultiByteToWideChar Lib "Kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, B yVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long

Private Function WToA(ByVal st As String, Optional ByVal cpg As Long = -1, Optional lFlags As Long = 0) As String
Dim stBuffer As String
Dim cwch As Long
Dim pwz As Long
Dim pwzBuffer As Long
Dim lpUsedDefaultChar As Long

If cpg = -1 Then cpg = GetACP()
pwz = StrPtr(st)
cwch = WideCharToMultiByte(cpg, lFlags, pwz, -1, 0&, 0&, ByVal 0&, ByVal 0&;)
stBuffer = String$(cwch + 1, vbNullChar)
pwzBuffer = StrPtr(stBuffer)
cwch = WideCharToMultiByte(cpg, lFlags, pwz, -1, pwzBuffer, Len(stBuffer), ByVal 0&, ByVal 0&;)
WToA = Left$(stBuffer, cwch - 1)
End Function

Private Function AToW(ByVal st As String, Optional ByVal cpg As Long = -1, Optional lFlags As Long = 0) As String
Dim stBuffer As String
Dim cwch As Long
Dim pwz As Long
Dim pwzBuffer As Long

If cpg = -1 Then cpg = GetACP()
pwz = StrPtr(st)
cwch = MultiByteToWideChar(cpg, lFlags, pwz, -1, 0&, 0&;)
stBuffer = String$(cwch + 1, vbNullChar)
pwzBuffer = StrPtr(stBuffer)
cwch = MultiByteToWideChar(cpg, lFlags, pwz, -1, pwzBuffer, Len(stBuffer))
AToW = Left$(stBuffer, cwch - 1)
End Function

Public Function EncodeUTF8(ByVal cnvUni As String) As String
If cnvUni = vbNullString Then Exit Function
EncodeUTF8 = StrConv(WToA(cnvUni, CP_UTF8), vbUnicode)
End Function

Public Function DecodeUTF8(ByVal cnvUni As String) As String
If cnvUni = vbNullString Then Exit Function
DecodeUTF8 = AToW(WToA(cnvUni, CP_ACP), CP_UTF8)
End Function

-----
Bom Shankar!

Ответ отправил: PsySex (Специалист)
Ответ отправлен: 14.12.2010, 17:59
Номер ответа: 264779

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 264779 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFPRO.RU, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.25 от 13.12.2010

    В избранное