Первый вопрос, на который вам нужно ответить, - это какая кодировка ваших исходных файлов?Конструктор по умолчанию QString предполагает, что это Latin1, если вы не измените его с помощью QTextStream :: setCodecForCStrings ().Поэтому, если ваши источники находятся не в латинице 1 (скажем, в UTF-8), вы получите неверный результат на этом этапе:
QString str( "Schöne Grüße" );
Теперь, если ваши источники находятся в UTF-8, вам нужнозамените его на:
QString str = QString::fromUtf8( "Schöne Grüße" );
Или, что еще лучше, используйте QObject :: trUf8 () везде, где это возможно, поскольку это дает вам возможности i18n в качестве бесплатного бонуса.
Следующее, что нужно проверить, этоКакая кодировка вашей консоли?Вы пытаетесь напечатать на него строку UTF-8, но поддерживает ли она UTF-8?Если это консоль Windows, то, вероятно, нет.Если это что-то совместимое с xterm с использованием шрифта Unicode в системе * nix с некоторым языковым стандартом * .UTF-8, все должно быть в порядке.
К вашему отредактированному вопросу:
Я не вижу причин не доверять Википедии, особенно когда она относится к определенному стандарту.Также упоминается, что UTF-8 имел до 6 байтов.По моему опыту, 3 байта - это максимум, что вы получаете с разумными символами на родном языке, такими как латиница / кириллица / иврит / китайский / японский.4 байта, вероятно, используются для чего-то более экзотического, вы всегда можете проверить стандарты, если вам действительно интересно.