사이트 전송을 처리 중이며 그 과정에서 내 charset이 파열되었습니다. 처음에는 변경없이 모든 파일을 전송했으며 새 서버의 파일에 특수 문자로는 개의 아이콘이 나타났습니다. 브라우저의 문자 인코딩 (Chrome 및 FF)을 보면 UTF-8을 자동으로 감지 한 것으로 나타났습니다. 페이지의 메타 문자 세트는 ISO-8859-1로 설정됩니다. 사본은 여러 데이터베이스의 여러 테이블에서 가져옵니다 (묻지 않음).브라우저에서 'ISO-8859-1'을 메타 문자 세트로 사용하는 경우 UTF-8로 페이지가 감지되었습니다.
원본 사이트에 모두 표시되어야합니다. 새로운 사이트에서 <?>
... 나는 그것을 파고 들었고, 기본 charset = "UTF-8"을 php.ini에서 찾았습니다. 아무것도 설정하지 않았습니다. 이제 사이트의 대부분의 페이지가 잘 표시되고, 브라우저는 메타 문자 세트 태그를 인식합니다. 모두가 행복합니다. 즉, 루트가 아닌 폴더로 이동할 때까지.
이 폴더의 파일은 메타 문자 세트가 ISO-8859-1이지만 브라우저에 UTF-8로 읽으므로이 페이지에 <?>
이 표시됩니다. 브라우저를 ISO-8859-1로 설정하면 잘 표시됩니다. 자동 감지는 UTF-8로 재설정합니다. 어떤 아이디어?
감사합니다.
업데이트 (아래 코멘트에서 추가) :
나는 martinstoeckli에서 권장하는대로 W3C checker을 통해 페이지를 실행, 그리고 메타 태그가 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
동안 HTTP의 콘텐츠 형식이 Content-Type: text/html; charset=utf-8
것을 나에게 알려줍니다 내게 충돌 문자 인코딩 선언 오류가 발생했습니다. 미친 짓은 UTF-8 선언이 어디에서 왔는지 알아낼 수 없다는 것입니다. 그것은 어디에도 없습니다. 어떤 파일에도 없습니다. 모든 파일은 UTF-8 w/out BOM으로 저장되었습니다. php.ini는 기본값을 선언하지 않도록 설정되어 있습니다. PatomaS가 제안한 것처럼 .htaccess 폴더가 설정됩니다.
(그것은 가치가 무엇인지, 모질라의 웹 스니퍼 text/html; charset=utf-8
의 HTTP 헤더의 Content-Type을 확인하십시오.)
업데이트 : 나는 그것을 제기로 우리는이 문제에 대한 해결책에 도달하지 않았지만 , 내가 결정 했 내 문자 인코딩 문제를 해결하는 가장 좋은 방법은 UTF-8 인코딩을 사용하는 모든 것을 리펙토링하는 것입니다. 물론, 이것은 아마도 당신이 "나를 왜 utâ8-encode()하지 않겠습니까?"와 같은 흥미 진진한 초보자 질문으로 여기 나를 보게 될 것입니다. "
물론 미스테리가 남아 있다는 것을 의미합니다. 모든 것이 다르게 구성되었다고 표시 될 때 서버가 HTTP Content-Type charset 헤더를 UTF-8로 보내는 이유는 무엇입니까?
나는 숭고한 텍스트 2를 사용하고, 모든 파일이 BOM없이 UTF-8로 저장됩니다. 장기적으로 모든 것을 UTF-8로 변환 할 계획입니다. 지금은 문자를 올바르게 표시해야하고 다음 단계를 수행해야합니다. 답변 주셔서 감사합니다! – somewhatsapient
나는 이것을 알아 내려고 시도하는 것이 말과 바퀴를 장바구니에 넣고 왜 내가 어디로 가지 않는지 묻는 것과 같다. 이 문제를 특별히 해결하지는 않지만 (왜 서버가 비정상적인 HTTP charset 헤더를 보내는가?), 현명한 장기적인 해결책을 제안함으로써 잘못된 인코딩 관행의 큰 문제를 해결하기 때문에 이것을 대답으로 받아들입니다. – somewhatsapient
여기에는 선언 문제에 대한 설명이 나와 있습니다. http://www.w3.org/International/questions/qa-html-encoding-declarations btw .htaccess charset solution과 http://www.justskins.com/forums/php4-에서 설명한 설명을 시도해 볼 수도 있습니다. 1-2-incorrect-7845.html, cys –