2011-10-09 51 views
2

是否有一個函數可以從字符串中刪除所有非UTF-8字符?刪除或編碼非UTF-8字符

+0

Yur問題非常不清楚。如果一個字符串是Unicode,那麼根據定義,該字符串中包含的所有字符都是Unicode字符。 –

+0

@Michael在UTF-8的情況下不是真的。 http://en.wikipedia.org/wiki/UTF-8#Invalid_byte_sequences –

+0

@Pekka,那不是一個Unicode字符串。雖然我可能會誤解,並且OP沒有Unicode字符串開頭。 –

回答

10

如果您有一個可能包含無效字符的UTF-8字符串,則可以使用iconv刪除這些字符。這應該工作:

$text = iconv("utf-8", "utf-8//ignore", $text); 

使其與任意的佔位符可見是一個有點艱難 - 我想不出任何簡單的方法來做到這一點,總之通過每一個字節行走,看看它是否是一個有效的字符。 Wikipedia article提供了關於如何做到這一點的更多信息。

+1

這是正確的:P這就是爲什麼我刪除了我的評論:)) – sbaaaang

+0

btw此代碼允許我顯示特殊的字符?它不會像我看到的那樣去除它們,但它將它們編碼爲utf-8;我是對的? :P – sbaaaang

+1

@Ispuk nope,這應該只從UTF-8字符串中刪除非UTF-8字符。如果你需要做其他的事情(比如從其他編碼轉換字符),你需要知道什麼* original *編碼是 –