PEAR Manual
Prev |  | Next

# XML encoding

XML encoding -- XML encoding in Services_Ebay

## XML encoding in Services_Ebay

Since mid-2005, the eBay API will only accept UTF-8 encoded XML-documents. As encoding all data to UTF-8 is tedious, Services_Ebay will take care of this for you. All you need to do is specify the encoding you want to use in your script when creating a session object.

Example 60-1. Using ISO-8859-1 in your script
    require_once 'Services/Ebay.php';

    // pass some authentication data
    $session = Services_Ebay::getSession($devId, $appId, $certId, 'ISO-8859-1');
    $session->setToken($token);

    // create new proxy object
    $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);

The umlaut characters contained in the description of the item will be automatically converted to UTF-8 when the XML-document is created. Furthermore the result document which is returned by the eBay API will be decoded again to ISO-8859-1 so you do not have to worry about UTF-8 at all.

Of course, it is also possible to supply UTF-8 encoded data to Services_Ebay. All you have to do is change the encoding type, when creating the session object.

Example 60-2. Using UTF-8 in your script
    require_once 'Services/Ebay.php';

    // pass some authentication data
    $session = Services_Ebay::getSession($devId, $appId, $certId, 'UTF-8');
    $session->setToken($token);

    // create new proxy object
    $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);

In this example you are using utf8_encode() to encode the data prior to passing it to Services_Ebay. To avoid duplicated encoding, you need to set the encoding to UTF-8.

Prev | Home | Next
Getting started | Up | Error Handling