でスマイリー私は、文字列からのようUTF-16絵文字 "OPEN MOUTH WITH 笑顔" を示して助けてください "\ uD83D \ uDE03" のQtで(多分それを表示するためにqDebug()
またはQLabel
を使用)。表示UTF-16のQt
QString a = "\\uD83D\\uDE03";
は私qDebug
にそれを印刷したい、と私は期待される結果は次のとおりです。
は私が持っています。私はこれをする方法を知らない。
でスマイリー私は、文字列からのようUTF-16絵文字 "OPEN MOUTH WITH 笑顔" を示して助けてください "\ uD83D \ uDE03" のQtで(多分それを表示するためにqDebug()
またはQLabel
を使用)。表示UTF-16のQt
QString a = "\\uD83D\\uDE03";
は私qDebug
にそれを印刷したい、と私は期待される結果は次のとおりです。
は私が持っています。私はこれをする方法を知らない。
見コメント(私は疑問にそれを移動した)後:
私は= "\ uD83D \ uDE03を" QStringのしています。私はそれを私のqDebugに印刷したいと思っていました。私はこれをする方法を知らない。
私は問題が何であるかを見ています。文字列のエンコーディングと異なるタイプの文字列エンコーディング間の変換。
この種のリテラル「\ uD83D \ uDE03」(無効なままにしておきます)を使用する場合は、1バイトを文字として使用できるエンコーディングを使用する必要があります。 たとえば、UTF-8などです。その後、内部でUTF-16を使用するQString
に変換する必要があります。 Qtの4において
QString smile = QString::fromUTF8("\xF0\x9F\x98\x83");
それはもう少し複雑である:(Qtの5)それを修正する
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QString smile = QTextDecoder(codec).toUnicode("\xF0\x9F\x98\x83", 4);
別のアプローチは、QChar
を使用し、それはQt4を用nicely documented(作品とQt5)、ここではドキュメントの例の微調整です:
static const QChar unicodeSmile[] = { 0xD83D, 0xDE03, 0 };
QString smile = QString::fromRawData(unicodeSmile);
wchar
でも、これはプラットフォームに依存しているので、QtがQChar *
に近づいた理由がもっと問題になるかもしれません。
ありがとうございます。 –
コードを表示してください。何を試しましたか? – demonplus
私は 'QString a =" \\ uD83D \\ uDE03 ";'それを私のqDebugに印刷したいと思い、私が期待した結果があります。私はこれをする方法を知らない。 –