Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.02.07;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
2-1260534328
Alexxx
2009-12-11 15:25
2010.02.07
FontDialog


15-1259754434
12
2009-12-02 14:47
2010.02.07
Переписал триггер SQL2000. Что не так то?


8-1202728924
Vayrus
2008-02-11 14:22
2010.02.07
SWF2Exe


3-1234507272
matveih1
2009-02-13 09:41
2010.02.07
ibconsvc.exe


15-1259840977
Insor
2009-12-03 14:49
2010.02.07
Чем составлен данный дамп БД?