mbstring 関係

PHP 5.2.1 に CP932 系エンコーディングの追加パッチが適用

ChangeLog などには書かれていませんが、PHP 5.2.1 では、mbstring に CP932 系エンコーディングの追加パッチが適用されました。PHP 5.2.1 からは CP51932、ISO-2022-JP-MS が使用可能になっています。

このパッチに関係して eucJP-win と UTF-8 の間で変換されるコードポイントの一部が変更されています。これは、glibc 等の eucJP-ms との変換の不一致を解消するためであると説明されています。ほとんどの場合、この変更の影響はないと思います。

mb_check_encoding()

mb_check_encoding() は指定した文字列のエンコーディングが有効なものかを確認するための関数です。PHP 5.2.0 と PHP 4.4.4 以前は mb_check_encoding() で UTF-8 を判定した場合、ほとんど TRUE を返していたため、UTF-8文字コードの判定を行った場合、精度が悪かったのですが、PHP 5.2.1 では改善されました。
また、mb_check_encoding() を引数なしで呼び出した場合は、自動エンコーディング変換、および、mb_convert_encoding()mb_convert_variables() などで変換に失敗すると、FALSE を返すようになっています。さらに、mb_get_info( 'illegal_chars' ) で文字エンコーディングの変換に失敗した文字数を確認することが可能になっています。
PHP 5.2.0 と PHP 4.4.4 以前では、mbstring.encoding_translation = On と設定して、自動エンコーディング変換が有効になっている場合、mb_check_encoding() で変換に成功したかどうかを判定できるはずだったのですが、正しく機能していませんでした。
この問題が PHP 5.2.1 では修正されています。

PHP 5.2.0 以降で追加された mbstring 関数