Прошу помочь, вместо русского шрифта при печати чека идут вопросительные знаки, с английскими буквами все нормально. Как правильно работать с кодировкой? Пробовал даже принудительно заменять символы в строке на 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();
}
Проблемы с подключением 119Ф
Re: Проблемы с подключением 119Ф
Проблему решил сам. Если вдруг кому надо, то вот пример правильной работы с русской кодировкой (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();
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();