Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с кодировкой 
:(
    Опции темы
VladCSharp
Дата 19.10.2006, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 11.10.2005

Репутация: нет
Всего: нет



вот процедура получения почты:

Код
Dim mPop3 As New POP3
Dim mesCount As Byte
mPop3.Username = tbUser.Text
mPop3.Password = tbPassword.Text
mPop3.Connect(tbIP.Text)
mesCount = mPop3.CheckMessages()
If mesCount = 0 Then
MsgBox("Новых сообщений нет")
Exit Sub
End If

Dim mes As New Message
Dim strB(1024) As Byte
Dim str As String
Dim i As Byte
For i = 1 To mesCount
mPop3.RetrieveHeader(i, mes)
strB = System.Text.Encoding.GetEncoding(1251).GetBytes("Form: " & mes.From.Text & " " & mes.Subject)
str = System.Text.Encoding.Default.GetString(strB)
List.Items.Add(str)
Next


mPop3.Disconnect()

все отлично, кроме одного: при выводе заголовков в ListBox русские буквы отображаются неверно, как можно исправить, какую кодировку задать?
PM MAIL   Вверх
Exception
Дата 19.10.2006, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 2
Всего: 186



Модератор: пожалуйста, используйте подсветку кода!
PM   Вверх
Djuffin
Дата 19.10.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 18.3.2005

Репутация: нет
Всего: 2



А это разве не в форум про VB?
PM MAIL   Вверх
stab
Дата 19.10.2006, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 1
Всего: 48



видимо, кодировку каким-то образом надо получить из заголовков.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
VladCSharp
Дата 20.10.2006, 04:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 11.10.2005

Репутация: нет
Всего: нет



Цитата(Djuffin @ 19.10.2006,  13:19)
А это разве не в форум про VB?

да, это в форум про vb, но я потом увидел, что для vb отдельный форум.

Добавлено @ 04:06 
Цитата(cully @ 19.10.2006,  15:47)
видимо, кодировку каким-то образом надо получить из заголовков.

получаю, теперь пишу так:
Код

For i = 1 To mesCount
            mPop3.RetrieveHeader(i, mes)
            StrCodir = mes.CharSet
            Str = "From: " & mes.From.Text & " " & mes.Subject
            If StrCodir = "" Then
                strB = System.Text.Encoding.GetEncoding(1251).GetBytes(Str)
            Else
                strB = System.Text.Encoding.GetEncoding(StrCodir).GetBytes(Str)
            End If
            Str = System.Text.Encoding.Default.GetString(strB)
            List.Items.Add(Str)
        Next

но все равно не получается
PM MAIL   Вверх
stab
Дата 20.10.2006, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 1
Всего: 48



мне кажется проблема здесь:

Код

Str = System.Text.Encoding.Default.GetString(strB)


наверное надо не Default, а ту которая в заголовке указана. попробуй, вдруг заработает.  smile

Добавлено @ 06:42 
кстати, а что за класс ты используешь для забора почты? где взял? может он с исходниками, если да глянь в них как осуществляется работа с кодировкой. мне, опять же кажется, что там кодировка вообще необрабатывается, если так, то:

Код

 If StrCodir = "" Then
                strB = System.Text.Encoding.GetEncoding(1251).GetBytes(Str)
            Else
                strB = System.Text.Encoding.GetEncoding(StrCodir).GetBytes(Str)
            End If


видима, надо заменить на:

Код

strB = System.Text.Encoding.ASCII.GetBytes(Str)


и делать перекодировку, как я описал выше.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
VladCSharp
Дата 20.10.2006, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 11.10.2005

Репутация: нет
Всего: нет



использую Indy.Sockets, какие только комбинации кодировок я уже не пробовал, мне кажется я не там ищу, а где искать не пойму
PM MAIL   Вверх
stab
Дата 20.10.2006, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 1
Всего: 48



ок, на днях скачаю, поковыряюсь. меня просто это тоже ждёт в скором будущем.  smile 


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
stab
Дата 21.10.2006, 03:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 1
Всего: 48



что-то не могу найти где скачать, скачал версию для Delphi .NET, это явно не то + скачал Indy CLR с кодплекс, вроде бы тоже не то, там нет метода RetrieveHeader и вообще такое ощущение, что проект на кодплексе в глубокой жопе.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.1186 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.