Unicode character to readable format
-
wrote on 11 Jan 2019, 13:12 last edited by
Hi
I have received Unicode character like "\u000B\u000E\u000E\u001E\u000E\u000E\u000E\u0013\u000E\u0014\u000E\n"I need to convert this in to readable format.
-
Hi
I have received Unicode character like "\u000B\u000E\u000E\u001E\u000E\u000E\u000E\u0013\u000E\u0014\u000E\n"I need to convert this in to readable format.
@eswar What do you mean with "readable". These characters are outside the letter/digit range and therefore cannot be displayed.
Do you want to dump them as hex? Which type is the variable that stores that characters?
-
wrote on 11 Jan 2019, 14:29 last edited by
Look at the UTF-8 encoding table. What you have are control chacters.
-
wrote on 11 Jan 2019, 15:39 last edited by
Do you want to do something like "show codes" that used to be in Wordperfect back in the 90s?
You might have to define your own unicode set to allow display of characters in a custom way. I have no idea what it takes to do such a thing.
-
wrote on 11 Jan 2019, 16:02 last edited by fcarney 1 Nov 2019, 16:11
or... change the font that has control characters as visible characters.
I actually want this for Qt. That way I can see the trailing spaces at the end of a line of code.
Edit:
Found it!
In Qt Creator:
Options->Text Editor->Display(tab)->Visualize Whitespace -
@eswar What do you mean with "readable". These characters are outside the letter/digit range and therefore cannot be displayed.
Do you want to dump them as hex? Which type is the variable that stores that characters?
-
Hi,
That's the catch: these are control characters, they don't have a visual representation. You will to replace them yourself with something if you want to make them "readable".
-
Hi,
That's the catch: these are control characters, they don't have a visual representation. You will to replace them yourself with something if you want to make them "readable".
-
That's what we are trying to make you understand: they already are in your QString but they have no visual representation. If you print the length of your string you'll see that it's not empty. You can process that string for whatever you need but you can't print anything readable.
-
@eswar said in Unicode character to readable format:
I need to convert this Unicode to string (Readble format).
Please tell us:
- Why do you want to make the escape sequence "readable"?
- Which Readable Format do you want to use? (there are many possible readable formats)
- What do you want the final string to look like? Type it out for us.
-
wrote on 23 Jan 2019, 05:38 last edited by eswar
Hi @JKSH
For your information, the application read the weighing scale data through serial port. if i ran the application same application in windows machine, i will get the correct data .
Refer the attached image (image url)
if i ran the application in the linux machine, i will get the escape sequence data only.
Refer image (link url) .
Both are same application screen shot with different machine. I dint know, Why it is behave in linux environment. If it is uni coded character in linux, i need to covert the character similar to the windows output. -
Hi @JKSH
For your information, the application read the weighing scale data through serial port. if i ran the application same application in windows machine, i will get the correct data .
Refer the attached image (image url)
if i ran the application in the linux machine, i will get the escape sequence data only.
Refer image (link url) .
Both are same application screen shot with different machine. I dint know, Why it is behave in linux environment. If it is uni coded character in linux, i need to covert the character similar to the windows output.@eswar The data you received is pure ASCII - it will work in Linux too if handled correctly.
Please show the code where you receive the data and how you store it in variables.
-
wrote on 23 Jan 2019, 06:51 last edited by eswar
Hi
Check the sample code for receiving data in the serial port.
connect(port,&QSerialPort::readyRead,this,&WeighingMachine::readData);
buffer is QByteArray datatype.
void WeighingMachine::readData()
{
QString Time = QTime::currentTime().toString("hh:mm:ss.zzz");while(!(port->atEnd())) { buffer.append(port->readAll()); int i =0; QByteArray temp; int len = buffer.length();
#ifdef QT_DEBUG
qDebug()<<"Buffer: "<< QString::fromUtf8(buffer);;
#endifwhile(i<len) { if ((buffer.at(i)== '\r') && (temp.length() > 0)) { QString str(temp); QString Find = "\n"; QString replace = ""; str.replace(str.indexOf(Find),Find.size(),replace); weighingMachineData = Time +"," +str;
#ifdef QT_DEBUG
// qDebug()<<"Weighing Data: "<<weighingMachineData;
#endiftemp.clear(); } else { temp.append(buffer.at(i)); } i++; } buffer.clear(); buffer.append(temp); temp.clear(); }
}
For your information, I also receive the same data in cutecom terminal also.
-
Hi
Check the sample code for receiving data in the serial port.
connect(port,&QSerialPort::readyRead,this,&WeighingMachine::readData);
buffer is QByteArray datatype.
void WeighingMachine::readData()
{
QString Time = QTime::currentTime().toString("hh:mm:ss.zzz");while(!(port->atEnd())) { buffer.append(port->readAll()); int i =0; QByteArray temp; int len = buffer.length();
#ifdef QT_DEBUG
qDebug()<<"Buffer: "<< QString::fromUtf8(buffer);;
#endifwhile(i<len) { if ((buffer.at(i)== '\r') && (temp.length() > 0)) { QString str(temp); QString Find = "\n"; QString replace = ""; str.replace(str.indexOf(Find),Find.size(),replace); weighingMachineData = Time +"," +str;
#ifdef QT_DEBUG
// qDebug()<<"Weighing Data: "<<weighingMachineData;
#endiftemp.clear(); } else { temp.append(buffer.at(i)); } i++; } buffer.clear(); buffer.append(temp); temp.clear(); }
}
For your information, I also receive the same data in cutecom terminal also.
@eswar said in Unicode character to readable format:
#ifdef QT_DEBUG
qDebug()<<"Buffer: "<< QString::fromUtf8(buffer);;
#endifPlease change that to:
qDebug() << "Buffer:" << buffer << "hex:" << buffer.toHex();
and post the output here.Thanks.
-
@eswar That is really strange - all these characters are outside the visible ASCII range.
- Do you have a documentation for the command set of the device you are talking with?
- Can you repeat the last qDebug() tests in Windows?
- Are you sure the serial parameters (baudrate, start, stop bits, parity) are correct in Linux?
-
Hi @aha_1980
Please refer below images for windows output
serial parameters are same for both linux and windows.
In device documentation, transmission data format is mentioned as 8 bit ASCII format.@eswar Something is terribly wrong in Linux - I'd blame the serial parameters.
You need to find the culprit before you can continue.
Best start with a terminal program in Linux and see if you can receive the data correctly there.
-
Thanks for the support.
Cutecom was also receive the same thing. So only i am not able to find the problem. Find below,
Ok, so some more questions:
- Is this Linux system a regular PC? Is it the same running Windows?
- How do you connect the device to the PC? True RS-232, or USB (like FTDI?)
- Is the external device properly powered?
6/24