2011-12-08 2 views
2

나는 모든 것이 UTF-8 (charsets, collations, ...)으로 정의 된 데이터베이스를 가지고 있습니다.
데이터베이스에서 데이터를 가져와 표시하는 PHP 페이지가 있습니다.
PHP 페이지 é, à 같은 특수 부르는 것들은 몇 가지 어려운 텍스트를 포함 , ...HTML - MySQL 데이터베이스에서 가져온 UTF-8과 특수 문자를 HTML로 섞음

내 PHP 페이지 utf-8에 정의 된 메타 문자 집합을 가지고있다.
나는 내 PHP 페이지가 utf-8 Unicode로 인코딩하도록 구성되어 편집기에 기록 mysql_set_charset("utf8");
데이터베이스에서 오는

뭐든지 괜찮습니다 (드림위버 CS4는 다른 UTF-8 옵션을 없음) 부르지 만 ..
하드 특수 문자 (é, à, ù, ...)를 잘 표시 할 수 없습니다.
데이터베이스에서 오는 데이터에 strip_tags(html_entity_decode($datafromdatabase));을 사용하면 동일한 문제가 발생합니다. 여기에는 정말 문제가 있습니다.

UTF-8을 계속 사용하면서 html로 표시되는 문자 (é, &agrave, ...)를 사용하지 않고도 특수 문자를 잘 표시하려면 어떻게해야합니까?

편집
하드 문자 애드혹 인코딩을 사용하여 저장되지 않은 PHP 페이지에서오고의 문제. 새 페이지를 복사하여 이전 페이지에 붙여 넣은 다음 이전 페이지에 저장했습니다. 단단한 문자에는 더 이상 문제가 없습니다.

하지만 여전히 문제가 있습니다. strip_tags(html_entity_decode($datafromdatabase));
을 사용하면 $datafromdatabase = htmlentities(strip_tags(html_entity_decode($datafromdatabase)), ENT_COMPAT, "UTF-8")을 사용해도 문제가 해결되지 않습니다. 나는 각각 é, à, ù의 데이터베이스에서 오는 텍스트 (# &eacute, ...)로 시작하는 stange 문자가 있습니다.

+1

그래서 문자 만 사용하는 내가 사실했다 strip_tags(html_entity_decode($datafromdatabase));에서 오는 문제에 대한

? 파일과 같은 소리는 실제로 UTF-8로 저장되지 않습니다. – deceze

+0

@deceze : 아니요, strip_tags (html_entity_decode ($ datafromdatabase)); 문은 같은 문제를 발생 시키지만 표시되는 문자는 좋지 않지만 HTML 파일과 다릅니다. – Oliver

+0

그래서 * 모든 * 비 ASCII 문자가 엉망이 되었습니까? 왜 태그를 제거하고 데이터베이스에서 HTML 엔티티를 디코딩합니까? – deceze

답변

0

하드 문자의 문제는 adhoc 인코딩을 사용하여 저장되지 않은 PHP 페이지에서 발생했습니다. 새 페이지를 복사하여 이전 페이지에 붙여 넣은 다음 이전 페이지에 저장했습니다. 단단한 문자에는 더 이상 문제가 없습니다. 바로 나오지 않는 당신의 PHP/HTML 파일에 strip_tags(html_entity_decode($datafromdatabase, ENT_QUOTES, "UTF-8"));

2

저장하는 대신 브라우저에 문자가 올바르게 표시되는 것 같습니다.

두 가지를 확인하십시오.

을 발행 UTF8 HTTP 헤더

header('Content-Type: text/html; charset=UTF-8'); 

그리고 당신의 HTML 선언이 문서가 제대로 인코딩 된 경우 HTML 4

위한거야

<meta http-equiv="Content-type" content="text/html;charset=UTF-8"> 

, 이것은해야 UTF8에게 언급되어 있는지 확인 그것.

+0

이것은 이미 완료되었습니다. – Oliver

관련 문제