Qtをメインに、プログラムやITに関する情報を発信

Qtの戯言

文字コード

Qtで日本語が文字化けする場合の対処方法

更新日:

QStringはUTF-16

Qtでは、文字コードをUTF-16で扱っています。
Visual StudioとQtを標準インストールすると、新規作成するソースファイルの文字コードはデフォルトでUTF-8となっているため、何らかの変換が必要となります。
(変換しないと化けます)

 

変換方法

QString::fromLocal8Bit()

個人的には、この関数を使うことが多いんじゃないかなと思います。
ソースファイルがUTF-8なら、QString::fromUtf8()で良いのでは?と思うかもしれませんが、Visual Studioを使用する場合、文字列リテラルは、ソースファイルの文字コードに関わらずロケールの文字コード(WindowsならShift-JIS)に変換されてコンパイルされるため、現在のロケールに合わせたコーデックで変換してくれるQString::fromLocal8Bit()を使用します。

QString str = QString::fromLocal8Bit("テスト");
ui->label->setText(str);

 

QString::fromUtf8()

Visual Studio 2015以降であれば、Unicode文字列リテラルに対応しているため、接頭辞u8を付けることでUTF-8のまま(ロケールの文字コードに変換されることなく)コンパイルさせることができます。
この場合には、本関数を使用すればOKです。

QString str = QString::fromUtf8(u8"テスト");
ui->label->setText(str);

 

Visual Studio 2015より以前のバージョンを使用している場合、以下のpragma指定をすることで、文字列リテラルをUTF-8にすることが出来ます。

#pragma execution_character_set("utf-8")

-文字コード
-, ,

Copyright© Qtの戯言 , 2020 All Rights Reserved Powered by STINGER.