isseium's blog

田舎に住むWebエンジニアのブログ

Zend_Rest_Server のパラメータに日本語を与えたときに文字化け発生

<?php
require_once 'Zend/Rest/Server.php';

class HogeSample
{
    public function test($msg)
    {
        return $msg;
    }
}

$server = new Zend_Rest_Server();
$server->setClass('HogeSample');
$server->handle();

?>

この状態で、

http://example.com/?method=test&msg=こんにちは

って感じで呼び出すと

<?xml version="1.0" encoding="UTF-8"?>
<HogeSample generator="zend" version="1.0"><test><response>&#65535;&#65533;&#65533;&#65533;&#65533;&#65533;</response><status>success</status></test></HogeSample>

こーんな風に化ける。
調べたら、SJISになってるっぽい。


そこで、HogeSample クラスのtestメソッドを

$msg = mb_convert_encoding($msg, 'UTF-8', 'SJIS');
return $msg;


に変更して暫定的に解決!

PHPの設定 or Zend Rest Server の設定で解決できないか調べてみる