文字コードの指定

日本語などマルチバイト文字を扱う場合、
文字コードを指定する必要があります。
主な文字コードには、UTF-8, EUC-JP, Shift_JIS などがあります。

文字コードを指定しない場合、
文字化けや、文字コードを利用した攻撃などの危険が生じますので、
文字コードは必ず指定するよう心がけて下さい。

Rampart では setEncoding の引数で文字コードを指定します。
引数の値として、一般的な文字コードの表記がご使用になれます。

// 文字コードとしてUTF-8を指定する場合。
$ramp->setEncoding("UTF-8");

// 文字コードとしてEUC-JPを指定する場合。
$ramp->setEncoding("EUC-JP");

// 文字コードとしてShift_JISを指定する場合。
$ramp->setEncoding("Shift_JIS");

インスタンスを生成した後、
次のステップで文字コードを指定するとよいでしょう。

文字コードの検出順序

ユーザから送信されたフォームデータなど、
外部から入力されたデータの文字コードが
プログラムの文字コードと同じである保証はありません。
文字コードが異なると、文字化けや、
文字コードを利用した攻撃などの危険が生じます。

そこで、Rampart では、外部から入力されたデータの文字コードを
自動的に setEncoding で指定した文字コードに変換します。

この際、Rampart は
外部から入力されたデータの文字コードを自動で判別しますが、
ごく稀に、正常に文字コードを判別できない場合があります。
判別できない理由は、簡単に言うと、
「判別が難しい文字がある」ためです。

たとえば、フォームデータが
原則 UTF-8 で送信されることが分かっている場合は
UTF-8 を優先的に検出するように指定することで、
こうした誤判別を回避することができます。

Rampart で文字コードの検出順序を指定する場合は、
setEncoding の第二引数を使います。

// UTF-8,EUC-JP,Shift_JIS の順で検出し、
// UTF-8 に変換する。

$ramp->setEncoding("UTF-8", "UTF-8,EUC-JP,Shift_JIS");

// EUC-JP,Shift_JIS,UTF-8 の順で検出し、
// UTF-8 に変換する。

$ramp->setEncoding("UTF-8", "EUC-JP,Shift_JIS,UTF-8");

補足

ちなみに、セキュリティ面から見た場合、
Shift_JIS はなるべく使わないほうが安全です。
UTF-8 か EUC-JP の使用をお勧めします。