Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Неверная кодировка текста / 25 сообщений из 30, страница 1 из 2
06.12.2007, 14:32
    #34991251
Неверная кодировка текста
Подскажите пожалуйста, загружаю с инета html страницу, сохраняю её на диск. Потом Пытаюсь программно найти в ней слово, например "Ошибка", но при загрузке текста из файла, VB грузит его в непонятной кодировке, например "Ошибка авторизац" Как вернуть нужную кодировку???
P.S. так пишутся только русские слова, английский текст воспринимается нормально
...
Рейтинг: 0 / 0
06.12.2007, 15:01
    #34991382
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверная кодировка текста
Проверь это кодировка Юникод?
-----------
Андрей.
...
Рейтинг: 0 / 0
06.12.2007, 15:05
    #34991406
Неверная кодировка текста
Как?
...
Рейтинг: 0 / 0
06.12.2007, 15:07
    #34991413
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверная кодировка текста
Открой эту страницу в IE и посмотри вид-кодировка
-----------
Андрей.
...
Рейтинг: 0 / 0
06.12.2007, 15:07
    #34991414
Неверная кодировка текста
Кстати, если открыть сохранённый документ блокнотом, то весь русский текст читабелен, а если через VB, то нет ((
...
Рейтинг: 0 / 0
06.12.2007, 15:10
    #34991428
Неверная кодировка текста
Да, Unicod UTF-8
...
Рейтинг: 0 / 0
06.12.2007, 15:16
    #34991458
Неверная кодировка текста
и как быть?
...
Рейтинг: 0 / 0
06.12.2007, 15:24
    #34991501
AndreyMp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверная кодировка текста
strconv
...
Рейтинг: 0 / 0
06.12.2007, 15:26
    #34991507
Неверная кодировка текста
AndreyMpstrconv

а можно поподробнее....
...
Рейтинг: 0 / 0
06.12.2007, 15:31
    #34991538
AndreyMp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверная кодировка текста
http://www.vbnet.ru/vbguide/showfunction.asp?id=34
...
Рейтинг: 0 / 0
06.12.2007, 15:35
    #34991559
Неверная кодировка текста
AndreyMphttp://www.vbnet.ru/vbguide/showfunction.asp?id=34

Спасибо, то что надо! ))
...
Рейтинг: 0 / 0
06.12.2007, 16:09
    #34991735
Неверная кодировка текста
Александр888 AndreyMphttp://www.vbnet.ru/vbguide/showfunction.asp?id=34

Спасибо, то что надо! ))

Рано я обрадовался (((
Короче, делаю сию процедуру:

Private Sub Command2_Click()
Open "data\login.htm" For Input As FileNum
Do Until EOF(FileNum)
Line Input #FileNum, txt
alltxt = alltxt + txt + vbCrLf
Loop
Close #FileNum
MsgBox StrConv(alltxt, vbFromUnicode)

End Sub



и получается вот что:
?????????•???????????????????????????????????????????????????????????????????????????
??•??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????


Что неправильно я делаю?
...
Рейтинг: 0 / 0
06.12.2007, 16:49
    #34991974
Неверная кодировка текста
HELP!!! Неужели никто не знает, как с этим справится??? ((
...
Рейтинг: 0 / 0
06.12.2007, 17:04
    #34992063
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверная кодировка текста
...
Рейтинг: 0 / 0
06.12.2007, 18:10
    #34992386
Неверная кодировка текста
Спасибо, вещь хорошая, но можно ли этого добится средствами VB?
...
Рейтинг: 0 / 0
06.12.2007, 18:29
    #34992431
Неверная кодировка текста
НастенькаНет, так дело не пойдет. вот что нашла:

Код: 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 конвертирует неверное.
вопрос: а как заранее узнать кодировку файла?

Попытался использовать этот код, выскочило на функции MultiByteToWideChar:
---------------------------
Microsoft Visual Basic
---------------------------
Ошибка компиляции:

Constants, fixed-length strings, arrays, user-defined types and Declare statements not allowed as Public members of object modules
---------------------------
ОК Справка
---------------------------

как это исправить?
...
Рейтинг: 0 / 0
06.12.2007, 19:32
    #34992559
Timekiller
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверная кодировка текста
Нужно создать обычный модуль и объявить функцию\глобальные переменные там. Собственно об этом компилятор и пишет.
...
Рейтинг: 0 / 0
07.12.2007, 09:37
    #34993159
Неверная кодировка текста
знаю, это звучит глупо... но, не могли бы вы написать подробно, как это делать... Спасибо!
...
Рейтинг: 0 / 0
07.12.2007, 13:13
    #34993871
AndreyMp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверная кодировка текста
Ух ты. Знакомая процедурка. :) Только вот с UTF может и не работать. К тому же у тебя видимо не UTF-8.
...
Рейтинг: 0 / 0
07.12.2007, 13:21
    #34993912
Неверная кодировка текста
А что тогда? Можешь помочь?
...
Рейтинг: 0 / 0
07.12.2007, 13:33
    #34993947
AndreyMp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверная кодировка текста
Выложи свой файл посмотреть.
...
Рейтинг: 0 / 0
07.12.2007, 13:43
    #34993987
Неверная кодировка текста
Вот текст
Option Explicit

Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
"URLDownloadToFileA" (ByVal pCaller As Long, _
ByVal szURL As String, ByVal szFileName As String, _
ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Public Event ErrorDownload(FromPathName As String, ToPathName As String)
Public Event DownloadComplete(FromPathName As String, ToPathName As String)

Public Function DownloadFile(FromPathName As String, ToPathName As String)
If URLDownloadToFile(0, FromPathName, ToPathName, 0, 0) = 0 Then
DownloadFile = True
RaiseEvent DownloadComplete(FromPathName, ToPathName)
Else
DownloadFile = False
RaiseEvent ErrorDownload(FromPathName, ToPathName)
End If
End Function

Private Sub Form_Load()
FileNum = FreeFile
nomber = 0
nomber_data = 0
stringnomber = 0
string2 = 0
End Sub

Private Sub Command1_Click()
Call login
End Sub

Sub login()
Call DownloadFile("http://civil.wab.ru/game.php", "data\enter.htm")
temp = "data\enter.htm"
Call text_load(temp)
End Sub

Sub text_load(path As String)
Open path For Input As FileNum
Do Until EOF(FileNum)
Line Input #FileNum, txt
table_txt(nomber) = txt
alltxt = alltxt + txt
Loop
Close #FileNum
MsgBox alltxt
End Sub

Вот так я загружаю текст...
...
Рейтинг: 0 / 0
07.12.2007, 13:59
    #34994054
Неверная кодировка текста
А вот так пытаюсь поменять кодировку
Dim FileNum As Integer
Dim txt As String
Dim alltxt As String

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



Private Sub Command1_Click()
Open "data\login.htm" For Input As FileNum
Do Until EOF(FileNum)
Line Input #FileNum, txt
alltxt = alltxt + txt
Loop
Close #FileNum
Dim strWin As String
Dim strUtf As String
Dim fsoSave As New FileSystemObject
Dim filSave As TextStream
Set filSave = fsoSave.CreateTextFile("temp.txt", True)
strWin = alltxt
strUtf = ConvertCodePage(strWin, Win, Utf)
filSave.WriteLine (strUtf)
filSave.Close
Call ConvertCodePage(alltxt, Utf, Win)
MsgBox alltxt
End Sub
...
Рейтинг: 0 / 0
07.12.2007, 15:12
    #34994381
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверная кодировка текста
Александр888Спасибо, вещь хорошая, но можно ли этого добится средствами VB?
запуск из VB примерно так
Код: plaintext
Shell "C:\xcode.exe C:\data\enter.htm C:\data\enter2.txt"
...
Рейтинг: 0 / 0
07.12.2007, 15:21
    #34994411
Неверная кодировка текста
запуск из VB примерно так
Код: plaintext
Shell "C:\xcode.exe C:\data\enter.htm C:\data\enter2.txt"
[/quot]

не работает. т.е. запускается, но кодировку не исправляет ))) сплошные ?????????????????????
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Неверная кодировка текста / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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