金曜日, 8月 22, 2008

フォームでブラウザが勝手に文字コードを変換

フォームで日本語の文字列を受け渡す場合に、ブラウザが勝手に文字列をEUCやShift-JISなどに変換してしまう場合があります。

エンコードされた文字列がなんであるかを知りたい場合に、mb_detect_encoding 関数を使うことができます。

まず、フォームにhidden属性で、テスト用の文字列を指定します。

<input type="hidden" name="JapaneseEncoding" value="テスト用文字列">

フォームから値を受け取るPHPのページで、mb_detect_encoding 関数を用いて文字コードを判定します。

文字コードが判定できれば、mb_convert_encoding 関数を用いて、コード変換することができます。

$encoding=mb_detect_encoding($_REQUEST['JapaneseEncoding'],"ascii,jis,utf-8,euc-jp,sjis");
mb_convert_encoding($str,"utf-8",$encoding);

Qt: 外部プログラムを起動する

  Qt/C++ のアプリは、外部へ直接アクセスできます。これはネットアプリでは不可能な Qt のメリットです。 外部プログラムを起動することもできます。QProcess::startDetached() を使うと独立したプロセスを立ち上げることができます。 この QProces...