LINUX.ORG.RU

История изменений

Исправление uuwaan, (текущая версия) :

Что есть AnsiString в Delphi. В версиях до 2009 – это строка в кодировке, соответствующей локали твоего приложения, скорее всего в CP1251, однако кодировка не обязана быть однобайтной. Начиная с 2009й AnsiString снабжён полем кодировки, а среда выполняет переконвертирование туда-сюда при необходимости. Так что до начала неплохо выяснить, какие байтики идут в сокет.

В Lazarus же строки хранятся в UTF-8. Так что по-хорошему из сокета надо доставать байты и, зная кодировку, преобразовывать в UTF-8, который класть в строку.

Строка выводится в консоль? Какая локаль в принимающей системе?

Исходная версия uuwaan, :

Что есть AnsiString в Delphi. В версиях до 2009 – это строка в кодировке, соответствующей локали твоего приложения, скорее всего в CP1251, однако кодировка не обязана быть однобайтной. Начиная с 2009й AnsiString снабжён полем кодировки, а среда выполняет переконвертирование туда-сюда при необходимости. Так что до начала неплохо выяснить, какие байтики идут в сокет.

В Lazarus же строки хранятся в UTF-8. Так что по-хорошему из сокета надо доставать байты и, зная кодировку, преобразовывать в UTF-8, который класть в строку.