2011-10-09 118 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 *编码是 –