CUIアプリで日本語

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().

な記述が。

  1. QCoreApplication(argc,argv);
  2. QString cliArg = QString::fromLocal8Bit(argv[1]);

で、正しい内部文字コードに変わる。

コメント

タイトルとURLをコピーしました