powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Кривая кодировка на ASP - сервере
5 сообщений из 5, страница 1 из 1
Кривая кодировка на ASP - сервере
    #32959528
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В клиенте пишу:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim objHTTP As New MSXML2.XMLHTTP
    With objHTTP
        .open "POST", HOST & "Default.asp?Action=" & Action, False
        .setRequestHeader "Content-Type", "text/html; charset=windows-1251"
        .setRequestHeader "Accept-Language", "ru, en"
        .setRequestHeader "Accept-Charset", "windows-1251;q=1"
        .setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
        .send s
    End With


На сервере:
Код: plaintext
1.
2.
3.
4.
5.
Dim s As String
Dim r() As Byte
        r() = Reqest.BinaryRead(Request.TotalBytes)
        s = StrConv(r, vbUnicode)
        Debug.Print s

И все равно "тест" выглядит как "тест". Как это лечится?
...
Рейтинг: 0 / 0
Кривая кодировка на ASP - сервере
    #32959552
Serg****
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может это поможет
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
//    Задаём культуру "ru-RU" для текущего потока запроса пользователя 
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("ru-RU");

//    Задаём культуру "ru-RU", используемую ResourceManager  для поиска 
// локализованных ресурсов
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru-RU");

//    Задаём кодировку контента ответа на запрос пользователя
this.Response.ContentEncoding = Encoding.GetEncoding Thread.CurrentThread.CurrentCulture.TextInfo.ANSICodePage);         
...
Рейтинг: 0 / 0
Кривая кодировка на ASP - сервере
    #32959561
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл упомянуть, использую обычный VB6.
...
Рейтинг: 0 / 0
Кривая кодировка на ASP - сервере
    #32960867
Фотография Va1entin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему на сервере параметр кодировки vbUnicode?

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Кривая кодировка на ASP - сервере
    #32965516
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Va1entin: А как его поменять?

Пошарил по интеренту, народ часто натыкался на эту особенность vb+iis. Решается это только в рамках платформы .NET, как описал Serg****.
Пришлось написать свою процедуру перекодировки, может еще кому пригодится... Функция принимает произвольные строки, не только целиком юникодовые.

Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
Public Function Decode(UnicodeString As String) As String
Dim x As Long, y As Long
Dim i As Long, j As Long
Dim b_in() As Byte
Dim b_buff() As Byte
Dim s_out As String
    b_in = StrConv(UnicodeString, vbFromUnicode)
    x =  0 
    i =  1 
    s_out = ""
    While x <= Len(us) -  1 
        If b_in(x) =  208  Or b_in(x) =  209  Then
            s_out = s_out & Mid(us, i, x - i +  1 )
            i = x
            Do While b_in(x) =  208  Or b_in(x) =  209 
                x = x +  2 
                If x > UBound(b_in) Then Exit Do
            Loop
            j = x -  2 
            b_buff = StrConv(Mid(us, i +  1 , j - i +  2 ), vbFromUnicode)
            s_out = s_out & ConvPureUnic(b_buff)
            i = x +  1 
        End If
        x = x +  1 
    Wend
    Decode = s_out & Mid(us, i, x)
    Exit Function
errh:
    Decode = s_out
End Function

Private Function ConvPureUnic(b_in) As String
Dim c1 As Byte, c2 As Byte
Dim b_out() As Byte
Dim x As Long
Dim s As String
    ReDim b_out(UBound(b_in) /  2 )
    For x =  0  To UBound(b_in) Step  2 
        c1 = b_in(x)
        c2 = b_in(x +  1 )
        If c1 =  208  Then
            If c2 =  129  Then
                b_out(x /  2 ) =  168 
            Else
                b_out(x /  2 ) = c2 +  48 
            End If
        Else
            If c2 =  145  Then
                b_out(x /  2 ) =  184 
            Else
                b_out(x /  2 ) = c2 +  112 
            End If
        End If
    Next x
    s = StrConv(b_out, vbUnicode)
    If Asc(Right(s,  1 )) =  0  Then
        ConvPureUnic = Left(s, Len(s) -  1 )
    Else
        ConvPureUnic = s
    End If
End Function
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Кривая кодировка на ASP - сервере
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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