Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сохранение в windows-кодировке. / 3 сообщений из 3, страница 1 из 1
16.04.2007, 12:14
    #34463067
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение в windows-кодировке.
У меня есть текстовый файл, называется 156.txt. он в dos-кодировке, т.е. блокнот его открывает кракозябрами. мне надо программно его пересохранить в 156_win.txt с windows-кодировкой. как это сделать, подскажите.
...
Рейтинг: 0 / 0
16.04.2007, 20:51
    #34464721
@TM@ROZчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение в windows-кодировке.
не париться, а написать для юзера ридми, а для себя огромный плакат "перекодировки через блокнот фарева!!!" :-)
...
Рейтинг: 0 / 0
17.04.2007, 06:56
    #34465042
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение в windows-кодировке.
Нет, так дело не пойдет. вот что нашла:

Код: plaintext
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.
Enum idCodePage
    win =  1251 
    dos =  866 
    Koi =  20866 
    Iso =  28595 
    Utf =  65001 
End Enum

Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, _
        ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, _
        ByVal cchWideChar As Long) As Long
Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, _
        ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As String, _
        ByVal cchMultiByte As Long, ByVal lpDefaultChar As String, ByVal lpUsedDefaultChar As Long) As Long

Public Function ConvertCodePage(SourseString As String, inPage As idCodePage, outPage As idCodePage) As String
  Dim LenSourseString As Long
  Dim strFirst As String
  Dim strSecond As String
  Dim RetStrLong As Long
  LenSourseString = Len(SourseString)
  strFirst = String(LenSourseString *  2 , Chr( 0 ))
  strSecond = String(LenSourseString *  2 , Chr( 0 ))
  RetStrLong = MultiByteToWideChar(inPage, &H1, SourseString, LenSourseString, StrPtr(strFirst), LenSourseString)
  RetStrLong = WideCharToMultiByte(outPage,  0 , StrPtr(strFirst), RetStrLong, strSecond, LenSourseString *  2 , ByVal  0 ,  0 )
  ConvertCodePage = Left(strSecond, RetStrLong)
End Function

вроде всё работает, но есть проблема, я заранее не знаю, какая будет кодировка - dos или win. если dos, то в win конвертирует нормально, а если win, то он win в win конвертирует неверное.
вопрос: а как заранее узнать кодировку файла?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сохранение в windows-кодировке. / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]