QStringとUtf-8
MFCからQtへの移植で注意しなければならないのは、
CStringをQStringへダイレクトに置換してはいけないこと。
実は、ローケールを設定しても、
QStringはもともとある日本語をUTF16に変換した際、
クセがある。
1 パス指定である「\」これを、
「/」には変えず、日本語に存在しない似た「¥」に変換してしまう。
2 utf-8のファイルはQByteArrayへ読み込むこと、
これもQStringへ読み込む際、意図しない日本語コードへ、
変換されてしまう。 その後、toLocal8Bit()で戻しても、
ムダである。
FormatやTRACE()などでも、そのままでは動作しない。
前者はsprintfではなくargへ。 後者はいちいちtoLocal8Bit().constData()などを、
つけなければならない。
コメント
コメントを投稿