добрый день
спасибо за либу, пользую, работает отлично.
есть вопрос:
присылаю с сервера (delphi 2007, ServerSocket) текст с русскими буквами:
тел. НОКИА:
текст в ANSI: read_bin возвращает в строке символы ANSI, читаю посимвольно, преобразую в UTF8 - вопросов нет.
текст в UTF8: русские буквы приходят по 2 байта (как и положено)
тел. LG:
текст в ANSI: read_bin возвращает только часть строки ДО первой русской буквы
текст в UTF8: принимает на ура, даже преобразовывать ничего не надо.
ВОПРОС
каким образом можно оптимально заставить оба тел работать? сам я решение предполагаю, и не одно, но они мне не нравяться. LG при получении бинарного потока корректно распознает в нем русские буквы при копировании в строку, нокиа же, просто раскладывает - в каждый символ один байт.
буду признателен всем ответившим.
привожу свою функцию для преобразования данных из сокета в utf8 с русскими символами, может пригодиться кому нибудь. (функция фильтрует управляющие символы. этой же функцией можно читать русский текст из RecordStore)
function scr_frBIN(s: string): string; // (from BIN, ANSI to UTF)
var
i,l,co: integer;
ch: char;
re: string;
begin
re:= '';
l:= length(s)-1;
for i:=0 to l do begin
ch:= getChar(s,i);
co:= ord(ch);
if co>31 then
if co<127 then re:= re+ch
else if co>191 then re:= re+chr(co+848)
else if co=168 then re:= re+chr(1025)
else if co=184 then re:= re+chr(1105);
end;
scr_frBIN:= re;
re:= '';
end;