知識が豊富な人ほど新しい知識を身につけやすい

大人の記憶の仕組みは子供とは違い、関連づけて覚えます。
そう考えると、知識が多い人ほど関連づけられる情報が多いので、新しい知識を身につけやすいと思います。
結果として、知識が豊富な人ほど、新しい知識を身につけやすくなります。

大人の学習は、最初はなかなか覚えられずに苦労することになります。
ですが、ある一定量を超えると、ぐんぐんと身につけられるようになると思います。

C++Builder2007への移行作業

C++Builder2006からC++Builder2007へ移行中。
今のところ大きな問題は起きていない。

唯一の問題が、一部のプロジェクトで発生したVCLのコンパイルエラー。
includeする順番を変更(問題が発生するファイルを上に移動)することで回避できた。

PHPスクリプトに送信されたデータの文字コードの変換

PHPスクリプトに送信されたデータの文字コードの変換について

Webアプリケーションでは、ブラウザから送信されてくるデータの文字コードを指定することはできません。
そこで、データを受信した後に文字コードを判別し、変換する必要があります。

mbstring.encoding_translation

設定ファイル(php.ini)のmbstring.encoding_translationを「On」にすると、受信したデータを自動的に内部エンコーディングに変換します。

mbstring.encoding_translationの初期値は「Off」です。
アプリケーションの互換性を考えると「Off」のまま使用する方が良いと考えます。

mb_convert_encoding

文字コードを変換するには、「mb_convert_encoding」を使用します。

/* 内部文字エンコーディングからSJISに変換 */
$str = mb_convert_encoding($str, "SJIS");

/* EUC-JPからUTF-7に変換 */
$str = mb_convert_encoding($str, "UTF-7", "EUC-JP");

/* JIS, eucjp-win, sjis-winの順番で自動検出し、UCS-2LEに変換 */
$str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");

mb_convert_encoding」の3番目の引数に”auto”を指定する場合は、あらかじめ設定ファイル(php.ini)で「mbstring.language=Japanese」を指定するか、「mb_language」を使用して、言語を指定します。

/* "auto" は、"ASCII,JIS,UTF-8,EUC-JP,SJIS" に展開される */
mb_language('japanese');
$str = mb_convert_encoding($str, "EUC-JP", "auto");

携帯電話の絵文字など、規格外のコードが含まれている場合は、「mb_substitute_character」を使用して変換し、内部で処理します。
(参考)docomo(ドコモ)やauの絵文字の抽出をPHPで最も簡単にする方法

PHPスクリプトの文字コード

PHPスクリプトの文字コードについて。

PHPスクリプトに使用できる文字コード

PHPのスクリプトに使用できる日本語の文字コードは、「EUC-JP」と「UTF-8」です。
「シフトJIS」や「UCS-2」は使用できません。

ただしPHPの構築時に、オプションとして「–enable-zend-multibyte」を指定すれば、「シフトJIS」や「UCS-2」を使用することができるようになります。

国内のサーバーであれば、「–enable-zend-multibyte」は有効になっていると思いますが、環境によって使用できない可能性のある「シフトJIS」や「UCS-2」よりも、確実に使用できる「EUC-JP」や「UTF-8」を使用した方が良いと思います。

PHPスクリプトの文字コードの指定

PHPスクリプトの文字コードの指定するには、いくつかの方法があります。

  1. 設定ファイル(php.ini)の「mbstring.script_encoding」で指定する。

    シフトJISを指定する例

    mbstring.script_encoding=sjis-win
    

    複数の候補の中から自動検出する例

    mbstring.script_encoding=sjis-win,eucjp-win,ascii
    

    mbstring.languageの設定から自動検出する例

    mbstring.script_encoding=auto
    
  2. PHPスクリプト内で、「declare(encoding=文字コード)」で指定する。

    EUC-JPを指定する例

    declare(encoding="EUC-JP");
    
  3. PHPスクリプトにBOMを付加する。(Unicode限定、PHP5以降?)