【RAD統合環境】 Qt 総合スレ 7 【Win/Mac/Linux】at TECH【RAD統合環境】 Qt 総合スレ 7 【Win/Mac/Linux】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト8:デフォルトの名無しさん 10/04/04 07:14:56 >>5 QTextCodec::codecForLocale()って必ず"System"ロケールに合わせるみたいだから MinGW版はソースがutf-8なのにSJISで扱われて困るんじゃないかなー 試しに↓のコードを実行したら、俺の環境だとVCではOKでMinGWだと文字化けしたけど #include <QtGui> int main(int argc, char* argv[]) { QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); //環境にあわせる QString str = "日本語"; qDebug() << str; return 0; } 9:デフォルトの名無しさん 10/04/04 11:04:00 >>8 そうだね。MinGWだと例のコンパイルオプション付けないと化けるけど、MinGWによっては そのコンパイルオプション効かないのもあるし、Qt標準のMinGWはまさにそのコンパイル オプションが効かないヤツ(本家)だから、話がややこしくなる。 QTextCodec::setCodecForTr() の方は、tr()で囲った文字列に有効なんだけど、そのことも 書いてないし。 この辺りは事情が複雑だから、QTextCodecの話は敢えてテンプレートに書かなくても いいんじゃないのかな。書くのなら、 ■WindowsでVCの場合(日本語を含むソースコードはShift_JISで書く) QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Shift_JIS")); QTextCodec::setCodecForTr(QTextCodec::codecForName("Shift_JIS")); ■WindowsでMinGWの場合(日本語を含むソースコードはUTF-8で書く) QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8")); QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); とすべきだと思う。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch