(注:私はこれを試していません。使用しているコンパイラがわかりません。また、QTに完全に慣れていないため、間違っている可能性があります。以下は、Windows上のUnicodeに関する一般的な知識に基づいています。)
Windowsでは、8ビット文字列は通常、システムの現在のコードページ(「ANSI」コードページとも呼ばれます)にあると見なされます。これはUTF-8ではありません。お使いのシステムでは、明らかにcp1252です。したがって、実際には2つの問題が発生しています。
- コンパイラが正しいコードページに変換しようとするUnicode文字を指定しています。Windowsでは、cp1252にu + 2648を表すコードポイントがないため、コンパイル時エラーが発生します。
- しかし、コードがコンパイルされると仮定すると、それでも機能しません。cp1251にあるこの文字列をfromUtf8に渡します。fromUtf8はUTF-8文字列を必要とします。文字列は有効なUTF-8ではないため、ランタイムエラーが発生する可能性があります。
Linuxシステムでは、8ビット文字列にUTF-8を使用しているため、どちらも「偶然に」機能します。
これを正しく行うには、UTF-8で8ビット文字列をすぐに指定します。
QString s = QString::fromUtf8("\xE2\x99\x88");