XML エンコーディング -- Services_Ebay の XML エンコーディング
Services_Ebay の XML エンコーディング
2005 年の中ごろ以降、eBay API は UTF-8 エンコードされた XML
文書しか受け付けなくなります。すべてのデータを UTF-8
に変換するのは退屈な作業です。Services_Ebay が、
あなたのためにこれを代わりに行います。あなたがすべきことは、
セッションオブジェクトを作成する際に
スクリプトのエンコーディングを指定することだけです。
例 67-1スクリプトで ISO-8859-1 を使用する場合 require_once 'Services/Ebay.php';
// 認証データを渡します
$session = Services_Ebay::getSession($devId, $appId, $certId, 'ISO-8859-1');
$session->setToken($token);
// 新しいプロキシオブジェクトを作成します
$ebay = new Services_Ebay($session);
$item = Services_Ebay::loadModel('Item', null, $session);
$item->Category = 57882;
$item->Title = 'International Item';
$item->Description = 'This description contains Umlaut characters like Ä, ü and ß';
$item->Location = 'At my home';
$item->MinimumBid = '532.0'; $item->VisaMaster = 1;
$item->ShippingType = 1;
$item->CheckoutDetailsSpecified = 1;
$item->Country = 'US';
$item->SetShipToLocations(array('US', 'DE', 'GB'));
$item->addShippingServiceOption(1, 1, 3, 1, array('US'));
$result = $ebay->AddItem($item); |
|
商品の説明文に含まれているウムラウト文字は、XML ドキュメントを作成する際に
自動的に UTF-8 に変換されます。さらに、eBay API が返す結果のドキュメントは
ISO-8859-1 にデコードされます。そのため、あなたは UTF-8
については何も考慮する必要はありません。
もちろん、UTF-8 エンコードされたデータを Services_Ebay
に渡すこともできます。
セッションオブジェクトを作成する際のエンコーディング指定を変更するだけです。
例 67-2スクリプトで UTF-8 を使用する場合 require_once 'Services/Ebay.php';
// 認証データを渡します
$session = Services_Ebay::getSession($devId, $appId, $certId, 'UTF-8');
$session->setToken($token);
// 新しいプロキシオブジェクトを作成します
$ebay = new Services_Ebay($session);
$item = Services_Ebay::loadModel('Item', null, $session);
$item->Category = 57882;
$item->Title = 'International Item';
$item->Description = utf8_encode('This description contains Umlaut characters like Ä, ü and ß');
$item->Location = 'At my home';
$item->MinimumBid = '532.0'; $item->VisaMaster = 1;
$item->ShippingType = 1;
$item->CheckoutDetailsSpecified = 1;
$item->Country = 'US';
$item->SetShipToLocations(array('US', 'DE', 'GB'));
$item->addShippingServiceOption(1, 1, 3, 1, array('US'));
$result = $ebay->AddItem($item); |
|
この例では、utf8_encode() を使用して、
データを事前にエンコードしてから Services_Ebay
に渡しています。二重にエンコードしてしまうことを避けるために、
エンコーディングを UTF-8 と指定する必要があります。