Проблемы с подключением 119Ф

Модели:
Меркурий-114.1К, Меркурий 115Ф, Меркурий 119Ф, Меркурий 130ф, Меркурий MS-K
Аватара пользователя
sdknk
Сообщения: 9
Зарегистрирован: 18 дек 2018, 18:11

Re: Проблемы с подключением 119Ф

Сообщение sdknk »

Прошу помочь, вместо русского шрифта при печати чека идут вопросительные знаки, с английскими буквами все нормально. Как правильно работать с кодировкой? Пробовал даже принудительно заменять символы в строке на UTF-8 по таблице, все равно толку нет.


void __fastcall TForm1::Button8Click(TObject *Sender) // Продажа
{
Memo1->Clear();
AnsiString Tovar = "Тестовая продажа";
Tovar = UTF8Encode(Tovar);
// AnsiString Tovar = "Test prod";
AnsiString TextJSON = "{\"sessionKey\": \""+aKey+"\",\"command\":\"AddGoods\",\"nomenclatureCode\":\"\",\"productID\":0,\"productName\":\""+Tovar+"\",\"qty\":10000,\"section\":1,\"taxCode\":6,\"price\":10100,\"sum\":10100,\"paymentFormCode\":4,\"productTypeCode\":1,\"exciseAmount\":0}";

IdTCPClient1->Host = "localhost";
IdTCPClient1->Port = 50009;
IdTCPClient1->ConnectTimeout = 3000;
IdTCPClient1->ReadTimeout = 3000;
IdTCPClient1->Connect();

IdTCPClient1->Socket->Write(UTF8Encode(TextJSON).Length());
IdTCPClient1->Socket->Write(UTF8Encode(TextJSON));

TStringStream* Stream = new TStringStream(AnsiString(""));
IdTCPClient1->Socket->ReadStream(Stream);
Memo1->Lines->Add(UTF8Decode(Stream->DataString));
IdTCPClient1->Disconnect();
}

Теги:
Аватара пользователя
sdknk
Сообщения: 9
Зарегистрирован: 18 дек 2018, 18:11

Re: Проблемы с подключением 119Ф

Сообщение sdknk »

Проблему решил сам. Если вдруг кому надо, то вот пример правильной работы с русской кодировкой (Builder C++)

Memo1->Clear();

AnsiString TextJSON = "{\"sessionKey\": \""+aKey+"\",\"command\":\"PrintText\",\"text\": \"Тестовая печать\",\"forcePrint\": false}";
IdTCPClient1->Host = "localhost";
IdTCPClient1->Port = 50009;
IdTCPClient1->ConnectTimeout = 3000;
IdTCPClient1->ReadTimeout = 3000;
IdTCPClient1->Connect();

IdTCPClient1->IOHandler->Write(UTF8Encode(TextJSON).Length());
IdTCPClient1->IOHandler->WriteLn(TextJSON, enUTF8);

TStringStream* Stream = new TStringStream(AnsiString(""));
IdTCPClient1->Socket->ReadStream(Stream);
if (Stream) Memo1->Lines->Add(UTF8Decode(Stream->DataString));
IdTCPClient1->Disconnect();
Ответить