Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2010.02.07;
Скачать: [xml.tar.bz2];

Вниз

TICQClient   Найти похожие ветки 

 
IntruderLab   (2008-03-02 11:41) [0]

Изменил все строки в компоненте, которые отвечали за правильный коннект к серверу, теперь есть другая проблема-не видит русского языка и в принципе английского тоже:приходят сообщения в неправильной кодировке. Как решить проблему?


 
Сергей М. ©   (2008-03-03 09:58) [1]


> Как решить проблему?


Перекодировать принятый текст в "правильную" кодировку.


 
kolyann__   (2008-05-24 00:44) [2]

Сергей М., а как?? На некоторых форумах дают функции па удалению #0 байта (паидее там и #4 есть), но этого мало, можеш пападробнее...?


 
Eraser ©   (2008-05-24 03:11) [3]

> [0] IntruderLab   (02.03.08 11:41)

на сколько я знаю, там еще много чего переделывать прийдется, лучше оринетируйся на исходники миранды.
насчет кодировки - вроде они на юникод перешли.


 
may be I am noob... ©   (2008-05-24 17:10) [4]

на

вставь в ICQWorks

function UTF8ToStr(Value: String): String;
function UTF8ToStrSmart(Value: String): String;

function UTF8ToStr(Value: String): String;
var
 buffer: Pointer;
 BufLen: LongWord;
begin
 BufLen := Length(Value) + 4;
 GetMem(buffer, BufLen);
 FillChar(buffer^, BufLen, 0);
 MultiByteToWideChar(CP_UTF8, 0, @Value[1], BufLen - 4, buffer, BufLen);
 Result := WideCharToString(buffer);
 FreeMem(buffer, BufLen);
end;

function UTF8ToStrSmart(Value: String): String;
var
 Digit: String;
 i: Word;
 HByte: Byte;
 Len: Byte;
begin
 Result := "";
 Len := 0;
 if Value = "" then Exit;
 for i := 1 to Length(Value) do
 begin
   if Len > 0 then
   begin
     Digit := Digit + Value[i];
     Dec(Len);
     if Len = 0 then
       Result := Result + UTF8ToStr(Digit);
   end else
   begin
     HByte := Ord(Value[i]);
     if HByte in [$00..$7f] then       //Standart ASCII chars
       Result := Result + Value[i]
     else begin
       //Get length of UTF-8 char
       if HByte and $FC = $FC then
         Len := 6
       else if HByte and $F8 = $F8 then
         Len := 5
       else if HByte and $F0 = $F0 then
         Len := 4
       else if HByte and $E0 = $E0 then
         Len := 3
       else if HByte and $C0 = $C0 then
         Len := 2
       else begin
         Result := Result + Value[i];
         Continue;
       end;
       Dec(Len);
       Digit := Value[i];
     end;
   end;
 end;
end;


затем идешь в ICQClient
ищешь:
if Assigned(OnMessageRecv) then
 FOnMsg(Self, Msg, UIN);


заменяешь на:
if Assigned(OnMessageRecv) then
 FOnMsg(Self, UTF8ToStr(Msg), UIN);


все робит ништяк.


 
TForumHelp ©   (2008-05-25 14:52) [5]

Залезь в ICQWorks.pas, найди процедурку procedure CreateCLI_SETUSERINFO(Pkt: PRawPkt;IsMTNEnabled : Boolean; XStatus: Byte; var Seq: Word); и убери строки:


CapPrefixes[11]+
CapPrefixes[12]+
GetNewCap(#$13#$4E)+


 
kolyann__   (2008-05-29 14:14) [6]

благодарю


 
kolyann__   (2008-05-29 15:36) [7]

Есть проблемка. Приходят корявые соабщения с инфума,
вот что в отладчике:
#0"!"#4"2"#4"E"#4">"#4"4"#0"/"#0":"#0")"
Если это прогнать через UTF8ToStr(Msg)  - то вылетит ошибка...


 
han_malign ©   (2008-05-29 16:31) [8]


> #0"!"#4"2"#4"E"#4">"#4"4"#0"/"#0":"#0")"

енто - UCS16(#4 - как раз русская страница), в простонорадье Unicode,
если сначала четные с нечетными байты местами поменять - то приведенеие к WideChar прокатит...

З.Ы. вообще то в заголовке пакета кодировка указывается...
1-й канал данных
     TLV(2)
             TLV($101)
                   Encoding: Word
                   CodePage: Word
                   data...
(Encoding = 2) - Unicode


 
kolyann__   (2008-05-29 21:31) [9]

А можно пападробней об перекодирование unicod"a в обычный string ? ?



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2010.02.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
15-1259734968
matveih1
2009-12-02 09:22
2010.02.07
Как показать направление сортировки в DBGrid


2-1260456472
Taras
2009-12-10 17:47
2010.02.07
Печать с помощью QuickReport


2-1260708366
JohnKorsh
2009-12-13 15:46
2010.02.07
Вопрос по беспроводным сетям.


15-1258735761
xayam
2009-11-20 19:49
2010.02.07
Запрос к MySQL


15-1260101328
xayam
2009-12-06 15:08
2010.02.07
Анализ исходного кода по грамматике





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский