Delphi for PHPで日本語などのマルチバイト文字を使うには

投稿者: : Chikako Yonezawa

概要: Delphi for PHPで日本語などのマルチバイト文字を使用する場合の最低限の設定について説明します

Delphi for PHP 1.0は、英語版の為、デフォルトの設定のままですと、マルチバイト文字を扱う際に文字化け等が発生します。

マルチバイト文字を使用するには、最低限以下の設定が必要となります。

    エディタの設定について

エディタのデフォルトフォントは "Courier New"にセットされているため、そのまま日本語などのマルチバイト文字を入力すると、文字化けして表示されます。

エディタ上で日本語などのマルチバイト文字を使うには、エディタのフォントを MSゴシックなど、使用する文字コードが正しく表示されるフォントに設定します。

設定は、メニューの [Tools | Options]を選び、オプションダイアログを表示し、Editor Options内の Displayの箇所にあります Editor fontを設定します。

Hide image
php02

オプションダイアログの Editor Optionsの箇所の Use UTF-8 to create new units and forms にチェックをつけ、新規作成で生成されるフォーム・ユニットで UTF-8を使用するように設定します。

Hide image
php01

    オプションの設定について

実行するプロジェクトで正しくマルチバイト文字を処理するために、オプションダイアログの PHPの箇所で、以下のようにマルチバイト文字の為のオプションを設定します。

項目

デフォルト値

設定値

説明

Default Charset

iso-8859-1

utf-8

:PHPアプリケーション開発のディフォルトの文字コード

Language

“neutral”

Japanese

国別言語サポート NLS(National Language Setting)

Detect Order

NULL

auto

文字コード検出のデフォルト

HTTP Input

“pass”

auto

HTTP入力文字エンコーディングのデフォルト値

HTTP Output

“pass”

UTF-8

HTTP出力文字エンコーディングのデフォルト値

Internal Encoding

NULL

UTF-8

内部文字エンコーディングのデフォルト値

Script Encoding

NULL

auto

スクリプトのエンコーディングで使用する文字コード

Subsiiute Character

NULL

none

無効な文字を代替えする際の文字コード

Function Overload

“0”

0

シングルバイト対応の関数をマルチバイト関数の対応する関数で置き換えるかどうかを指定

Encoding Translation

“0”

On

文字園コーディング検出、および内部文字エンコーディングの変換を行う透過的な文字園コーディングフィルタを有効にするかしないか

Strict Delection

“0”

Off

厳格なエンコーディング検出を行うかどうかを指定

Set these values on php.ini

Off

On

php.iniに保存するのであればチェックをつけます

  • passが指定された場合、文字エンコーディング変換は行われません
  • autoが指定された場合、この文字列は ASCII,JIS,UTF-8,EUC-JP,SJISに変換されます

設定前 (デフォルトの状態)

Hide image
php03

設定後

Hide image
php04

    ユニット上での設定について

生成されたユニットの Encodingプロパティに utf-8を設定します。

Hide image
php05

    デザイナ側で、マルチバイト文字を使用した際のコード補完に関する問題

現在、デザイナ上でコントロールの Caption等に日本語などのマルチバイト文字を使用した際、コード補完の際に application errorが発生します。

この問題につきましては、以下の方法にて回避を行ってください。

  1. [File | Save All]にて、プロジェクトなどのすべてのファイルを保存します。
  2. [File | Close All]にて、プロジェクトなどのすべてのファイルを閉じます。この際、Codeタブ側が表示された状態で閉じてください。
  3. [File | Open Project]等で、閉じたファイル(プロジェクトなど)を再度開きます。Codeタブ側であることを確認してください。この状態であれば、コード補完を使用しても application errorは発生しません。

注意:

一度、デザイナ側(Designタブ側)に切り替えてしまうと、再度 application errorが発生します。再度、発生した場合は、同じ手順にて作業を行ってください。また、application errorが発生してもコード補完はできませんが作業を続行させることは可能です。

Server Response from: SC1