Qt4.6でコマンドラインの文字をSQliteに格納するするアプリで、文字化けの件。
いろいろと模索しました。最初はQSqlQueryで、sql実行時に文字化けが起こると思い、sql関係で文字コードの設定をさがした。
次にQString関係かと試すがダメ。
メインにQCoreApplicationの定義をしたら、不思議な状況が起こるので、前後にargvの内容を表示したら、QCoreAppication内部で文字コードが変わるらしい。でドキュメントを読み直したら、
In cases where command line arguments need to be obtained using the argv() function, you must convert them from the local string encoding using QString::fromLocal8Bit().
な記述が。
- QCoreApplication(argc,argv);
- QString cliArg = QString::fromLocal8Bit(argv[1]);
で、正しい内部文字コードに変わる。
コメント