sashoalm sashoalm - 28 days ago 15
C++ Question

qDebug() doesn't support unicode strings on Windows

I have a line edit that contains a file name with Unicode-characters and it displays correctly in the GUI, but when I print it with

qDebug()
, it shows the Unicode symbols as question marks.

For example, for
"C:/Test/абв"
this code will show only
"C:/Test/???"
.

This line:

qDebug() << ui->lineEditFileName->text();


Would show:

enter image description here

This problem happens only on Windows (both XP and 7), on Linux it works fine. The version of Qt is 4.8.0.

Answer

It seems that the Unicode text is 'lost in translation', because Qt Creator uses QString::fromLocal8Bit() when reading the debug output from the process.

I found the answer from this thread:

I don’t know what qDebug uses to put strings onto the console on windows (I assume QString::toLocal8Bit). I know that Qt Creator uses QString::fromLocal8Bit(…) to read the text from the process. That works great everywhere… but unfortunately there is one OS out there that still insists on using codepages that completely break any attempt to display more than one kind of script at a type.