Strano problema con preg_replace e carattere cinese

ho questo problema werid. Dopo un preg_replace, un personaggio cinese è diventato un personaggio funky. questa è la sceneggiatura.

$message = strip_tags(mysql_real_escape_string($_POST['message']),'<img><vid>'); echo $message; $message = removewhitespace($message); echo $message; function removewhitespace($a) { return preg_replace('/(\\\r\\\n\\\r\\\n)+/','\r\n\r\n', preg_replace('/^(\\\r\\\n)+|(\\\r\\\n)+$/', '', preg_replace('/\s+/', ' ', preg_replace('/^\s+|\s+$/', '', $a)))); } 

Il display sarebbe

 好不好你好不好  

Qualche idea?

Aggiungi il modificatore 'u' ai tuoi pattern (ad esempio '/(\\\r\\\n\\\r\\\n)+/u' invece di '/(\\\r\\\n\\\r\\\n)+/' ) e assicurati che l'object sia in UTF-8.

Solo in questo modo il tuo input verrà interpretato come UTF-8 invece di una codifica a singolo byte.

Usa \p{Z} invece di \s nella tua espressione regolare

I caratteri Unicode occupano più byte mentre i caratteri ASCII ne occupano uno. Probabilmente hai bisogno di fare una ricerca multibyte mb_ereg_replace http://us2.php.net/manual/en/function.mb-ereg-replace.php