QtにおけるUnicode
Unicodeは、世界で話されているほぼすべての言語のテキストをエンコードするための標準規格です。現在では、ほとんどの最新のオペレーティングシステムにおいて、テキストのネイティブエンコーディングとして使用されています。主な例外はMicrosoft Windowsで、アプリケーション向けにコードページとUnicodeの両方をサポートするデュアルシステムが依然として採用されています。
文字列を扱うための Qt のクラス
これらのクラスは、文字列データを扱う際に役立ちます。テキストのレンダリングに関する情報については、「リッチテキスト処理の概要」を参照してください。また、文字列データがXML形式の場合は、「XML処理の概要」を参照してください。
QString APIの読み取り専用サブセットを用いた、Latin-1、UTF-8、またはUTF-16文字列の統一的なビュー | |
バイト配列 | |
バイト配列のリスト | |
バイト配列内で高速に検索可能なバイトのシーケンスを保持します | |
QByteArray API の読み取り専用サブセットを備えたバイト配列のビュー | |
16 ビットの Unicode 文字 | |
ローカライズされた照合順序アルゴリズムに従って文字列を比較します | |
文字列の照合を高速化するために使用可能 | |
8 ビット ASCII/Latin-1 文字 | |
Latin-1 テキスト内の部分文字列検索を最適化 | |
US-ASCII/Latin-1でエンコードされた文字列リテラルをラップする薄いラッパー | |
さまざまな言語における数値と、その文字列表現との相互変換を行います | |
正規表現を用いたパターンマッチング | |
QRegularExpression オブジェクトと文字列とのマッチング結果 | |
QRegularExpression オブジェクトによる文字列へのグローバルマッチングの結果に対するイテレータ | |
QByteArrayMatcher のコンパイル時バージョン | |
QLatin1StringMatcher のコンパイル時バージョン | |
Unicode 文字列 | |
テキストのエンコードおよびデコードのための基底クラス | |
テキスト用の状態ベースのデコーダ | |
テキスト用の状態ベースのエンコーダ | |
文字列のリスト | |
Unicode文字列内で迅速に照合できる一連の文字を保持する | |
QString の部分文字列をラップした軽量ラッパー | |
指定された区切り文字に沿って文字列をトークンに分割する | |
QString APIの読み取り専用サブセットを備えた、UTF-16文字列の統一ビュー | |
文字列内のUnicodeテキスト境界を検出する方法 | |
テキストの読み書きに便利なインターフェース | |
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(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.