2013-02-28 3 views
2

내 CMS에서 저작권 기호 ®이 들어있는 문자열을 읽고 있습니다. 그러나이 문자열을 내 사이트에 렌더링하면 저작권 기호 바로 앞에 Â이 표시됩니다. 예를 들어 내 CMS에 Microsoft®이 있지만 Microsoft®을 렌더링합니다.렌더링  특수 문자 앞뒤

$title = (string) $myString; 
$title = htmlentities($title,ENT_NOQUOTES,'UTF-8',false); 
$title = str_replace(array('&lt;','&gt;'),array('<','>'), $title); 
var_dump($title); 

답변

3

"Copyright Sign"의 문자 코드는 0xA9입니다. 그러나 이것은 0x00 ~ 0x7F의 범위를 벗어납니다.

따라서 ISO-8859-1 또는 Windows-1252와 같은 1 바이트 문자 집합에서는 정상적으로 작동합니다.

그러나 유니 코드와 같은 멀티 바이트 세트에서는 0xC2 0xA9으로 표시됩니다. 두 번째 바이트가 원본과 동일하다는 것은 우연입니다.

수정하려면 인코딩이 일관성이 있는지 확인해야합니다. 한 가지 해결책은 HTML 문서가 UTF-8charset임을 확인하는 것입니다.

+0

HTML 문서에는 'UTF-8'이 설정되어 있습니다. – Jon

0

텍스트 arround를 "이동"하면 utf8_encoding을 시도한 다음 utf8_decoding을 시도하십시오. 그리고 html의 헤더에서 올바른 인코딩을 사용하고 있는지 확인하십시오.

데이터베이스에 이미 엉망으로 만들었 으면 다시 되돌릴 수 없습니다.

0

php.ini 파일에서 PHP [default_charset][1] 설정을 확인하거나 설정 utf8

에 PHP 파일로 인코딩을 설정하여 PHP 파일

<?php 

ini_set("default_charset", "utf-8"); 

?> 

ini_set()를 사용하는 HTML 메타 태그 :

<meta equiv="Content-Type" content="text/html; charset=utf-8">