You'll need a customFieldList object, which is an array of custom fields. There are different objects for the different data types of custom fields - below would be a string custom field. I utf8_encode to deal with weird characters that you normally don't see.
$customFieldList = new CustomFieldList();
$customField = new StringCustomFieldRef();
$customField->value = utf8_encode("contents of string custom field");
$customField->internalId = 'custbody_whatever_your_field_is';
$customFieldList->customField[] = $customField;
$so->customFieldList = $customFieldList;