2010-07-15 5 views
0

utf-8 문자 인코딩을 완전히 벗어날 수없는 것 같습니다.PHP에서 디코딩하는 html 엔티티

그래서 데이터베이스에서 콘텐츠를 utf-8 xml 파일로 내보내고 있습니다. 내가 가져올 소프트웨어는 문자 인코딩에 대해 매우 엄격하므로 모든 것을 CDATA 태그에 넣을 수는 없습니다.

이상한 문자가 많이 있습니다 (예 : ’, — & hellip; 이미 데이터에 있습니다.

이들은 XML에서 작동하지 않으므로 교체해야합니다 (일반적으로 '견적'만 사용).

이상적으로 모든 문자를 디코딩 한 다음 htmlspecialchars ($ text, ENT_COMPAT, 'UTF-8', FALSE)를 사용하여 다시 인코딩해야합니다. 하지만 그들을 해독 할 함수를 찾을 수없는 것 같습니다. 하나 있습니까? str_replace()를 사용하여 수동으로 각 엔티티를 살펴 보았습니다.하지만 예상보다 훨씬 큰 작업이되었습니다.

도움이되면 생명의 은인이 될 것입니다. 감사합니다.

답변

2

html_entity_decode()?

경우에 따라 php의 문자 변환 문제에서 로캘을 설정하는 것이 중요합니다. 상관 없습니다.

setlocale(LC_CTYPE,'en_US.utf8'); 

하지만 모든 가능한 경우, 엔티티에 복귀하지 않고, 처음부터 인코딩 권리를 얻기에 투자 언제든지, 가치가 있다고 조언한다.

+0

감사합니다. html_entity_decode()를 (를) 사용해 보았습니다. 그러나 로케일 세트를 사용하더라도 여전히 ndash와 같은 엔티티를 변환하지 않는 것 같습니다 네, 이제는 모든 바보 같은 문자를 제거하여 엔티티가 필요합니다. 불행히도, 나는 주어진 데이터로 작업해야하며, 어떻게 인코딩을 수정할 수 있는지에 관해서는 벽돌 벽을 치는 것 같다. 내가 볼 수있는 유일한 해결책은 찾기 및 바꾸기뿐입니다. – Leon

+0

om my mac (!)은 커맨드 라인에서 작동하기 때문에 로케일이나 다른 것을 설치해야 할 수도 있습니다 :'mac : ~ $ php \ n \ n -' (서식이 부족해서 죄송합니다. \ n = newline) 데비안 증권 lenny : 같음. – mvds

+0

만약 그것들을 모두 없애고 싶다면, iconv를 사용하여 UTF-8에서 ASCII // TRANSLIT 또는 ASCII // IGNORE로 변환하십시오. – mvds

관련 문제