[All]
Delphi for PHPで日本語などのマルチバイト文字を使うには
投稿者: : Chikako Yonezawa
概要: Delphi for PHPで日本語などのマルチバイト文字を使用する場合の最低限の設定について説明します
Delphi for PHP 1.0は、英語版の為、デフォルトの設定のままですと、マルチバイト文字を扱う際に文字化け等が発生します。
マルチバイト文字を使用するには、最低限以下の設定が必要となります。
エディタの設定について
エディタのデフォルトフォントは "Courier New"にセットされているため、そのまま日本語などのマルチバイト文字を入力すると、文字化けして表示されます。
エディタ上で日本語などのマルチバイト文字を使うには、エディタのフォントを MSゴシックなど、使用する文字コードが正しく表示されるフォントに設定します。
設定は、メニューの [Tools | Options]を選び、オプションダイアログを表示し、Editor Options内の Displayの箇所にあります Editor fontを設定します。

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

オプションの設定について
実行するプロジェクトで正しくマルチバイト文字を処理するために、オプションダイアログの 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に変換されます
設定前 (デフォルトの状態)

設定後

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

デザイナ側で、マルチバイト文字を使用した際のコード補完に関する問題
現在、デザイナ上でコントロールの Caption等に日本語などのマルチバイト文字を使用した際、コード補完の際に application errorが発生します。
この問題につきましては、以下の方法にて回避を行ってください。
- [File | Save All]にて、プロジェクトなどのすべてのファイルを保存します。
- [File | Close All]にて、プロジェクトなどのすべてのファイルを閉じます。この際、Codeタブ側が表示された状態で閉じてください。
- [File | Open Project]等で、閉じたファイル(プロジェクトなど)を再度開きます。Codeタブ側であることを確認してください。この状態であれば、コード補完を使用しても application errorは発生しません。
注意:
一度、デザイナ側(Designタブ側)に切り替えてしまうと、再度 application errorが発生します。再度、発生した場合は、同じ手順にて作業を行ってください。また、application errorが発生してもコード補完はできませんが作業を続行させることは可能です。