About FX_charset / This file is encoded by Shift-JIS code.
---------

FX_charasetについて

2005/1/28
新居雅行（msyk@msyk.net）

PHPでFileMakerのデータベースアクセスが可能なクラス「FX.php」（Chris Hansen作）が広く使われています。のFX.phpのラッパークラスがFX_charsetです。
http://www.iviking.org/FX.php/

FX.phpのVer.3.0以降をFileMaker Server 7 Advancedと使う場合には、ページの文字コードをUTF-8となるようにヘッダ指定することで、日本語もそのまま使えます。しかしながら、ASCIIコードをはずれた範囲の文字列は、&#12345;のようなコード表記になり、ソースを見て内容の判別ができないですし、ログを作成したり他のデータベースあるいはサーバに接続するような場合に支障がでます。

FX_charsetクラスを使うことでこの問題は解決されます。文字セットを指定することで、文字は文字としてきちんと見えます。

＜デモの利用方法＞
FX_charasetフォルダにあるBook_List.fp7を、FileMaker Server 7 Advancedで公開します。このデータベースは、adminとゲストに[完全アクセス]を与えているので注意をしてください。
FX_charasetフォルダをWeb公開可能なところにコピーします。そして、FX_charasetフォルダにあるindex-utf8.php、ないしはindex-euc-jp.phpのファイルにアクセスしてください。それぞれ、ページに使う文字セットの違いがあるだけです。
index-fx.phpは、FX.phpにあるFXクラスをそのまま使った場合のデモです。書籍の詳細ページで、Titleフィールドの文字列を1文字ずつ処理していますが、FX.phpだと文字列が文字列参照形式（&#nnnnnのようなもの）で得られるので、HTML表示だけでは問題は出ませんが、PHPで文字列処理をするとなると問題になります。書籍の詳細ページでの末尾の表示に注目してください。

＜FX_charasetの利用方法＞
FX.phpのラッパークラスなので、基本的にはFX.phpと同様です。異なるのは以下の点です。

・クラス生成は、もちろん、new FX(...)の代わりにnew FX_charset(...)にします。

・コンストラクタの戻り値が$fxとした場合、以下のメソッドを呼び出します。

FileMaker Server 7 Advanced／ページの文字セットがUTF-8
$fx = new FX_charset( ... );
// 特にどのメソッドを呼ばなくても、文字コードをUTF-8で処理します。

FileMaker Server 7 Advanced／ページの文字セットがEUC-JP
$fx = new FX_charset( ... );
$fx->SetCharacterEncoding('EUC-JP');
$fx->SetDataParamsEncoding('utf8');

ファイルメーカーPro 6/Unlimited／ページの文字セットがUTF-8
$fx = new FX_charset( ... );
$fx->SetCharacterEncoding('utf8');
$fx->SetDataParamsEncoding('SJIS');

ファイルメーカーPro 6/Unlimited／ページの文字セットがEUC-JP
$fx = new FX_charset( ... );
$fx->SetCharacterEncoding('EUC-JP');
$fx->SetDataParamsEncoding('SJIS');

＜その他＞
FX_charset.phpから、FX.phpをインクルードしています。このとき、FX.phpは、FX._charset.phpと同じフォルダにあるFXフォルダの中にあると仮定しています。つまり、'FX/FX.php'という相対パスで参照をしています。

FXフォルダの内容は、オリジナルのFX.php Ver.3.1(2004/12/28公開)と同一です。

FX_charsetのライセンスは、FX.phpと同一とします。

