2011-09-19 4 views
0

utf8_unicode_ci 형식의 TEXT 열이있는 테이블이 있습니다.php utf8 텍스트가 올바르게 렌더링되지 않습니다.

나는 또한이 필드에 다중 언어 텍스트를 넣을 수있는 양식이 있습니다. 나는 길이가 50 문자를 표시하려면이 열에서 각 텍스트를 가져올 때

그래서 난 다음을 수행하십시오

$text = $rows["text"]; 
$text = mb_substr($text, 0, 50); 
$text = htmlentities($text, ENT_COMPAT, 'UTF-8'); 

이 비 영어 문자를 렌더링하는 데 실패하고 난 mb_substr를 넣어 경우, 아무것도 보여 나던 아래에 htmlentities 기능이 나타나지만 텍스트를 자르고 일부 & 문자를 표시합니다; & 다른;

이 문제를 해결할 수있는 방법은 없나요?

+1

출력은 정확히 * 어떤 모양입니까? 왜 당신은 처음에'htmlentities()'를 사용하고 있습니까? –

+0

xss 코드 때문에 htmlentities를 사용해야합니다. 예를 들어, "σ σ σ σ σ σ σ σ σ σ σ σ σ σ σ σ σ σ σ σ σ σ σ"와 같이 입력하면 다음과 같은 샘플 텍스트가 나타납니다. htmlentities를 제거하면 다음과 같이 표시됩니다. substr을 제거하고 htmlentities를 그대로두면 제대로 작동하지만 50 자로 제한해야합니다. – fxuser

+0

(영문 일 수 있음)'htmlspecialchars()'는 XSS를 막기 위해 모든 문자를 엔티티 –

답변

1

mb_internal_encoding을 사용하여 char 인코딩을 UTF-8로 변경하면 문제를 해결할 수 있습니다.

mb_internal_encoding('UTF-8'); 
+0

으로 바꿀 필요가 없으며 제거 할 대상 또는이 코드를 정확히 어디에 둘까요? – fxuser

+0

나는 모든 파일에로드 된 내 설정 파일에 putted하고 문제를 해결하는 것, 감사합니다. – fxuser

0

당신은 MySQL의 < 5.0.7에있는 경우 : 는 mysql_query를 사용하여 쿼리 동안

는 UTF -8 사용 ("이름 UTF8을 SET;"); 당신이 새로운 MySQL의에 있다면

:

mysql_set_charset ("UTF8");

헤더 ('콘텐츠 유형 : 텍스트/일반; 문자셋 = UTF-8');

관련 문제