2011-10-09 3 views
2

문자열에서 UTF-8이 아닌 문자를 모두 제거하는 기능이 있습니까?비 UTF-8 문자 제거 또는 인코딩

+0

Yur 질문은 몹시 불투명합니다. 문자열이 유니 코드이면 해당 문자열에 포함 된 모든 문자는 정의상 유니 코드 문자입니다. –

+0

@Michael은 UTF-8의 경우 사실이 아닙니다. http://en.wikipedia.org/wiki/UTF-8#Invalid_byte_sequences –

+0

@Pekka, 그렇다면 유니 코드 문자열이 아닙니다. 비록 내가 오해하고있을 수도 있지만, OP는 유니 코드 문자열을 가지고 있지 않습니다. –

답변

10

잘못된 문자가 포함될 수있는 UTF-8 문자열이있는 경우 iconv을 사용하여 해당 문자를 제거 할 수 있습니다. 이 작업을해야합니다 : 임의의 자리로 표시 만들기

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

은 약간 험악하다 - 나는 모든 바이트를 걷는 짧은, 그렇게 할 수있는 쉬운 방법을 생각하고 유효한 문자인지 볼 수 없습니다. Wikipedia article은이를 수행하는 방법에 대한 자세한 정보를 제공합니다.

+1

맞아 : P는 내 코멘트를 지웠다. :) – sbaaaang

+0

이 코드를 사용하면 특수 문자를 올바르게 표시 할 수 있습니까? 내가 볼 수있는 것처럼 그것들을 제거하지는 않지만 그것들을 UTF-8로 인코딩합니다; 난 괜찮아? : P – sbaaaang

+1

@Ispuk nope, 이것은 UTF-8 문자열에서 비 UTF-8 문자 만 제거해야합니다. 다른 인코딩 (예 : 다른 인코딩의 문자 변환)과 같은 다른 작업이 필요한 경우 원래의 인코딩 인 –