トップ 一覧 ソース 検索 ヘルプ RSS ログイン

QTextStreamで文字コードを変換するメモ

QTextStreamには、文字コードや改行コードを変換しながらテキストを入出力してくれる機能があるらしい。これは、どれぐらい使えるものなのか? さくっと実験してみたのでメモ。

ちゃんと、日本語のCodecを使えるようにした場合、Windows/Mac/Linux共通の対応はこんな感じ。

文字コード対応するCodec
Shift JISShift_JIS/SJIS/MS_Kanji
EUCEUC-JP
JISISO-2022-JP/JIS7
UTF-8UTF-8
UTF-16 BOM無しUTF-16/UTF-16LE
UTF-16 BOM有りすべてのCodec

機種ごとの相違点はこんな感じ

  • Windowsでは『System』でShift JISに対応
  • LinuxとMacでは『System』でUTF-8に対応
  • LinuxでEUCを無理矢理読み込ませると落ちることがある

QTextStream::setGenerateByteOrderMark()で設定を変えることができるけど、デフォルトではBOM認識すると強制的にUNICODEで読み込んでくれる。つまり『UTF-16 BOM有り』が最強ってこと? それ以外でも、まじめにやればちゃんと読める、と。

改行コードの変換は・・・ CR+LFとLFは良いんだけど、CRのみの改行は不可。まぁ、いまさら、改行がCRだけの環境なんて無いだろうから、問題ないのかな。


参考にしたのはこのあたり。

実験に使ったソースコードはこちら:testQTextStream-09src.zip


(2009/11/20 メモ,Qt