A simple question with no hits on Google.
What are the characters that are allowed in a SKU? The entire UTF-8 character set?
Diving into the core code... The validation starts at Mage_Catalog_Model_Product_Attribute_Backend_Sku and simply checks the length to make sure it's less than 64 characters long...
/** * Validate SKU * * @param Mage_Catalog_Model_Product $object * @throws Mage_Core_Exception * @return bool */ public function validate($object) { $helper = Mage::helper('core/string'); if ($helper->strlen($object->getSku()) > self::SKU_MAX_LENGTH) { Mage::throwException( Mage::helper('catalog')->__('SKU length should be %s characters maximum.', self::SKU_MAX_LENGTH) ); } return parent::validate($object); } Then proceeds to call through to its parent's method... That only checks for uniqueness and requiredness of the attribute.
/** * Validate object * * @param Varien_Object $object * @throws Mage_Eav_Exception * @return boolean */ public function validate($object) { $attrCode = $this->getAttribute()->getAttributeCode(); $value = $object->getData($attrCode); if ($this->getAttribute()->getIsRequired() && $this->getAttribute()->isValueEmpty($value)) { return false; } if ($this->getAttribute()->getIsUnique() && !$this->getAttribute()->getIsRequired() && ($value == '' || $this->getAttribute()->isValueEmpty($value))) { return true; } if ($this->getAttribute()->getIsUnique()) { if (!$this->getAttribute()->getEntity()->checkAttributeUniqueValue($this->getAttribute(), $object)) { $label = $this->getAttribute()->getFrontend()->getLabel(); throw Mage::exception('Mage_Eav', Mage::helper('eav')->__('The value of attribute "%s" must be unique', $label) ); } } return true; } So apparently, to the Magento Core team, anything goes for a SKU so long as it's under 64 characters, non-null, and unique. I suppose the underlying database type is also a consideration as well.