MySQLで、MEDIUMBLOB型のフィールドに文字列を入れていた場合、そのままでは日本語などは化けてしまいます。MySQL側で型変換することで解決しました。
例えば、MySQLの文字エンコードが EUC-JP だった場合は、以下のようにして型変換して取り出します。
SELECT CONVERT(column USING ujis) FROM table;
PHPから操作する際、PHPの文字コードが UTF-8 だったとしても、上記の文字コードは MySQL の文字コードにしてください。MySQLが UTF-8 だった場合は、 ujis
ではなく、 utf8
にします。
PHP7.1以降と、MySQL5.5以降の組み合わせであれば、MySQLからPHPへの文字エンコードの変換は、 PDO の初期化時に、PHP 側の文字エンコードを指定しておけば、自動的に変換してくれます。