このページでは

QtにおけるUnicode

Unicodeは、世界で話されているほぼすべての言語のテキストをエンコードするための標準規格です。現在では、ほとんどの最新のオペレーティングシステムにおいて、テキストのネイティブエンコーディングとして使用されています。主な例外はMicrosoft Windowsで、アプリケーション向けにコードページとUnicodeの両方をサポートするデュアルシステムが依然として採用されています。

文字列を扱うための Qt のクラス

これらのクラスは、文字列データを扱う際に役立ちます。テキストのレンダリングに関する情報については、「リッチテキスト処理の概要」を参照してください。また、文字列データがXML形式の場合は、「XML処理の概要」を参照してください。

QAnyStringView

QString APIの読み取り専用サブセットを用いた、Latin-1、UTF-8、またはUTF-16文字列の統一的なビュー

QByteArray

バイト配列

QByteArrayList

バイト配列のリスト

QByteArrayMatcher

バイト配列内で高速に検索可能なバイトのシーケンスを保持します

QByteArrayView

QByteArray API の読み取り専用サブセットを備えたバイト配列のビュー

QChar

16 ビットの Unicode 文字

QCollator

ローカライズされた照合順序アルゴリズムに従って文字列を比較します

QCollatorSortKey

文字列の照合を高速化するために使用可能

QLatin1Char

8 ビット ASCII/Latin-1 文字

QLatin1StringMatcher

Latin-1 テキスト内の部分文字列検索を最適化

QLatin1StringView

US-ASCII/Latin-1でエンコードされた文字列リテラルをラップする薄いラッパー

QLocale

さまざまな言語における数値と、その文字列表現との相互変換を行います

QRegularExpression

正規表現を用いたパターンマッチング

QRegularExpressionMatch

QRegularExpression オブジェクトと文字列とのマッチング結果

QRegularExpressionMatchIterator

QRegularExpression オブジェクトによる文字列へのグローバルマッチングの結果に対するイテレータ

QStaticByteArrayMatcher

QByteArrayMatcher のコンパイル時バージョン

QStaticLatin1StringMatcher

QLatin1StringMatcher のコンパイル時バージョン

QString

Unicode 文字列

QStringConverter

テキストのエンコードおよびデコードのための基底クラス

QStringDecoder

テキスト用の状態ベースのデコーダ

QStringEncoder

テキスト用の状態ベースのエンコーダ

QStringList

文字列のリスト

QStringMatcher

Unicode文字列内で迅速に照合できる一連の文字を保持する

QStringRef

QString の部分文字列をラップした軽量ラッパー

QStringTokenizer

指定された区切り文字に沿って文字列をトークンに分割する

QStringView

QString APIの読み取り専用サブセットを備えた、UTF-16文字列の統一ビュー

QTextBoundaryFinder

文字列内のUnicodeテキスト境界を検出する方法

QTextStream

テキストの読み書きに便利なインターフェース

QUtf8StringView

QString APIの読み取り専用サブセットを用いた、UTF-8文字列の統一的なビュー

Web上のUnicodeに関する情報

Unicodeコンソーシアムでは、以下のような多数の文書を公開しています。

Qt における Unicode

Qt および Qt を使用するほとんどのアプリケーションでは、ユーザーに表示される文字列のほとんど、あるいはすべてが Unicode を使用して格納されています。Qt では以下が提供されています:

  • ファイル入出力におけるレガシーエンコーディングとの相互変換:QTextCodec およびQTextStream を参照してください。
  • ロケール固有の入力方式およびキーボードのサポート。
  • Unicode文字を格納する文字列クラス `QString`。C文字列からの移行をサポートしており、UTF-8、ISO8859-1、US-ASCIIとの高速な相互変換や、一般的な文字列操作をすべて実行できます。
  • Unicode 対応の UI コントロール。
  • Unicode 準拠のテキスト分割 (QTextBoundaryFinder)
  • Unicode 準拠の改行およびテキストのレンダリング

Unicode の利点を最大限に活用するには、ユーザーに表示されるすべての文字列の保存にQString を使用し、テキストファイルの I/O はすべてQTextStream を使用して行うことをお勧めします。

Qt XML において、ユーザーに表示される可能性のある文字列であるすべての関数引数(QLabel::setText() など多数)は、const QString &を受け取ります。QString はconst char * からの暗黙的な型変換を提供するため、次のような記述

label->setText("Password:");

が動作するようになっています。また、QObject::tr() という関数もあり、次のような変換サポートを提供します:

label->setText(tr("Password:"));

QObject::tr() は、const char * から Unicode 文字列へのマッピングを行い、インストール可能なQTranslator オブジェクトを使用してこのマッピングを実行します。

Qt には、Unicode とレガシーエンコーディング間の変換方法を知っている、多数の組み込みQTextCodec クラスが用意されています。これらは、他のプログラムと通信したり、レガシーファイル形式のファイルを読み書きしたりする必要があるプログラムをサポートするためのものです。

const char * との変換には UTF-8 が使用されます。ただし、アプリケーションは他のロケール用のコーデックを容易に見つけ、開いているファイルやネットワーク接続に対して特別なコーデックを使用するように設定することができます。

US-ASCII や ISO-8859-1 は非常に一般的であるため、これらとの間で変換を行うための特に高速な関数も用意されています。例えば、アプリケーションのアイコンを開くには、次のようにします。

QFile file(QString::fromLatin1("appicon.png"));

または

QFile file(QLatin1String("appicon.png"));

Qtは、世界で使用されているほとんどの言語のテキストのレンダリングをサポートしています。サポートされている文字体系の詳細なリストは、オペレーティングシステムのサポート状況やターゲットシステムでのフォントの入手可能性に多少依存します。

「Qt による国際化」も参照してください 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.