2013-03-02 2 views
0

내 앞에서의 분기 question.PHP - 렌더링 - 특수 문자 앞 - 인코딩 문제?

내 CMS (CQ5)에서 ASCII 인코딩으로 입력 된 값을 얻습니다. 때로는 입력 된 문자열 중 일부에 특수 문자 (예 : copyright ®)가 들어 있는데, PHP로 출력 할 때 그 앞에 공백 문자 Â이 삽입됩니다.

UTF-8로 인코딩했는데 작동하지 않았습니다. 당신의 문자열 저작권 기호를 포함 할 경우

//$title is the CMS input that contains special characters 
$strA = iconv('ASCII', 'UTF-8//IGNORE', $title); 
$strB = mb_convert_encoding($title, "UTF-8"); 
$strC = utf8_encode($title); 
+0

데이터가 ** UTF-8 **로 인코딩되었지만 클라이언트가 데이터를 ISO-8859-1로 잘못 해석하는 경우 일반적으로 들립니다. – deceze

+0

어떻게이 문제를 해결할 수 있습니까? 각 HTML 페이지에 이미 다음 메타 태그가 있습니다 :'' – Jon

+1

그러면 데이터가 이중으로 인코딩됩니다. 당신은 확실히'utf8_encode'를 사용해서는 안됩니다. 이제까지. [모든 프로그래머가 절대적으로 인코딩 및 문자 집합에 대해 알기 위해 적극적으로 고려해야 할 사항] (http://kunststube.net/encoding/) 및 [웹 응용 프로그램에서 유니 코드 앞면을 처리하는 방법] (http : // kunststube.net/frontback/). – deceze

답변

1

다음 가 ASCII하지 않은 : 나는 다음과 같은 시도!

이미 UTF-8 또는 ISO-8859-1과 같은 형식입니다. 문자열의 실제 바이트 인코딩을보고 어떤 것이 있는지 파악할 수 있습니다. 또한 사용자의 브라우저는 문자 세트가 사용되는 알고 귀하의 CMS는 오른쪽 HTML 문자 집합 태그를 생성하는지 확인해야합니다

, 즉

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

 문자 전송에 의한 공통의 유물이다 UTF-8은 수신자에게 그렇게했다고 말하지 않습니다.

+0

입력 된 CMS 문자열의 인코딩을 검사하면 ASCII로 출력됩니다. 'var_dump (mb_detect_encoding ($ title)); ' – Jon

+0

나는 CMS -> PHP (Symfony) -> Browser에서 데이터가 흐른다 고 생각한다. PHP 수준의 문자열을 변환 할 수 있습니까? – Jon

+0

수신자에게 웹 브라우저를 사용한다고 가정하면 UTF-8이어야합니다. 각 HTML 파일의 상단에는 다음과 같은 태그가 있습니다 :'. – Jon