Qtアプリケーションにおける言語エンコーディングの扱い

Qtアプリケーションでの言語エンコーディングの扱いについてのメ モです。関連情報をご存知の方はぜひお知らせください。

QTextCodecの概要

Qtは文字列をUnicodeで扱います。Unicodeを格納するQStringクラス を使っている限り、アプリケーションは基本的にどんな言語でも扱 う事ができます。

しかし、アプリケーションがファイルやネットワーク越しのテキス ト情報を扱う場合、対象はUnicode以外の言語エンコーディングを利用 している場合があります(EUC-JPやSJIS等)。これを扱うための枠組とし て、QtにはQTextCodecというクラスが用意されています。

QTextCodecは文字列のエンコーディング変換を扱う抽象クラスで、 各言語エンコーディングをサポートするために、以下のような派生クラ スが用意されています。

実際の利用は以下のような手順で行います。

  1. QTextCodecのstaticメンバ関数codecForName("eucJP"), codecForLocale("ja_JP.SJIS")等を使って、目的のエンコーディング を扱うQTextCodecのインスタンスを得る
  2. 生成したインスタンスに対してcodec->toUnicode(str), codec->fromUnicode(str)といったメンバ関数を呼び出す

詳細はInternationalization with Qtの"5. Support encodings."及びQTextCodec Class Referenceを参照してください。

現行ザウルスでの扱い

LinuxザウルスではQt/Embedded 2.3.3(実体はlibqte.so)が採用されて います。これはSL-A300, SL-5x00共通です。ただし、以下のような違い があります。

上記の違いに起因して、SL-5x00ではeucJPやSJISといった日本語エ ンコーディングをQTextCodecで扱う事ができません。

しかし、コンパイル時の設定を変更する事により日本語エンコーディ ングをサポートしたlibqte を作成する事ができます。そのようにして 作成されたのがlibqte-ja です。ただし、製品に含まれるlibqteにはSHARPの手が入っているらし く、完全な互換性は取れない恐れがあります。

libqte-jaによる解決では、以下のような問題点が発生します。

Qt/Embedded次期バージョンでの扱い (注: 以下の記述内容は古くなっています。現状を反映していません)

既に公開されているQt/Embedded 3.0.5では、言語エンコーディングの扱いが改善されています。ソー スを斜め読みした限りでは、以下のような特長を持っています。 上記の特長から、Qt/Embedded 3.0.5がザウルスに塔載されれば海外モ デルでも問題無く日本語アプリケーションが利用できるようになるはず です。が、問題はその時期です。当分先になるようであれば、現状の不 都合を解決するためlibqte-ja関連の作業に注力する必要があります。

協力者募集

関連情報をお持ちの方や、自分でもlibqteまわりをいじっている方はぜ ひお知らせください。開発者の方はlinux-zaurusメーリングリ ストへの参加をおすすめします。

Links


yamaken at bp.iij4u.or.jp
$Id: qt-language-encoding.html.ja,v 1.3 2003/04/18 16:42:53 yamaken Exp $

SourceForge.jp