2011-03-01 6 views
1

한 사이트에서 다른 사이트로 mysql 데이터베이스를 이전하고 있습니다. 파일, 데이터베이스, 연결 등에 대한 인코딩을 올바르게 설정하는 방법은 무엇입니까?

그 encodign : UTF8

그것의 연결 encodign : utf8_unicode_ci

해당 사이트의 PHP 파일에 사용되는 인코딩 : BOM

모든 페이지에 대한 헤더의 인코딩없이 UTF8 그 사이트 : utf-8

모든 것이 그 사이트에서 잘 작동합니다.

그런 다음 phpmyadmin을 사용하여 데이터베이스를 내 보냈습니다. utf-8로 인코딩 된 .sql 파일을 생성했습니다. 파일을 열면 모든 것이 정상입니다.

그런 다음 모든 파일에 동일한 인코딩을 사용하는 새 사이트에 파일을 복사 한 다음 가져 왔습니다.

이전 사이트의 데이터를 새 웹 페이지에 표시 할 때 웹 페이지를 통해 깨진 문자가 표시됩니다. 예 : ™ =>.

브라우저의 인코딩을 utf-8에서 iso-8859-1로 바꾸면 올바른 기호가 나타납니다.

새 사이트의 다른 모든 항목이 정상적으로 작동하며 데이터베이스에 항목을 저장하고 다시 가져온 후에 인코딩 문제가 없습니다. 유일한 이상한 점은 내가 저장된 데이터를 열람 할 때 phpmyadmin은 깨진 문자를 보여줍니다. 그러나 나는 웹 사이트에 내용을 보여줄 때 그 문제가 없다.

나는 phpmyadmin과 webmin이라는 두 개의 다른 프로그램으로 가져 오기를 수행했다.

그래서 나는 무엇이 잘못 되었는가, 어떤 생각을 갖고 있는지에 대한 단서가 없다.

이렇게 인코딩되지 않도록 인코딩을 어떻게 구성해야합니까?

답변

2

어쩌면 첫 번째 사이트에서 연결 인코딩을 설정하지 않았을 수도 있습니다 (PHP의 mysql_client_encoding() 출력 참조). 이것이 문제인 경우 잘못된 형식으로 데이터를 저장했으며 동일한 오작동을 사용하여 올바르게 다시 변환했습니다.

p.s. utf8_unicode_ci는 인코딩이 아니며 데이터 정렬입니다 (문자열을 정렬하는 방법)

+0

와우, 너 천재 야. 이전 사이트의 연결은 'latin1'에있었습니다. 감사! – HappyDeveloper

0

이것은 이전 사이트에서 이전에 일어난 일이었습니다. 다른 데이터 정렬 이었기 때문에 utf8로 변경하려고 시도하면 이상한 기호가 모두 표시됩니다.

때때로 phpmyadmin의 백엔드에서 이상한 코드가 표시되지만 사이트에 문제가없는 것으로 나타납니다.

관련 문제