>데이터 베이스 >MySQL 튜토리얼 >내 페르시아어 문자가 이전 웹사이트 스크립트와 새 웹사이트 스크립트 간에 다르게 표시되는 이유는 무엇입니까?

내 페르시아어 문자가 이전 웹사이트 스크립트와 새 웹사이트 스크립트 간에 다르게 표시되는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-26 11:46:10247검색

Why Do My Persian Characters Display Differently Between Old and New Website Scripts?

데이터 저장 및 검색 시 이상한 문자 인코딩 불일치

페르시아어 문자를 활용하는 오래된 웹사이트를 다시 작성하려는 노력 중에 귀하는 다음과 같은 문제에 직면했습니다. 데이터가 저장되고 검색되는 방식 사이의 이상한 불일치. 이전 스크립트는 페르시아어 문자를 올바르게 표시하지만 새 스크립트는 왜곡된 것처럼 보이는 데이터베이스와 동일한 인코딩으로 표시합니다.

이 문제를 이해하려면 다음 사항에 유의하는 것이 중요합니다.

  • 이전 스크립트는 문자 인코딩을 위한 고유한 메커니즘을 사용하는 TUBADBENGINE에 의존합니다.
  • 새 스크립트는 다음을 활용합니다. 문자 인코딩을 다르게 처리하는 CodeIgniter.
  • 데이터베이스는 UTF-8 문자 집합과 utf8_persian_ci 조합으로 구성됩니다.

이전 스크립트를 사용하여 페르시아어 문자를 입력하면 데이터베이스에 زمران와 같은 이상한 시퀀스로 나타납니다. 그러나 이전 스크립트는 이를 올바르게 검색하고 표시합니다. 이는 TUBADBENGINE이 ISO-8859-1을 기반으로 하는 별도의 인코딩 체계를 사용하고 있음을 의미하며, 이는 새 스크립트에서 인식되지 않습니다.

반대로, 페르시아어 문자를 데이터베이스에 직접 삽입하면 해당 문자가 저장됩니다. 예상대로 새 스크립트에 의해 올바르게 검색되었습니다. 그러나 이전 스크립트에서는 이제 이를 물음표(????)로 표시합니다. 이는 이전 스크립트의 문자 디코딩 메커니즘이 데이터베이스에서 직접 삽입에 사용되는 것과 다른 인코딩을 예상하기 때문입니다.

해결책은 데이터베이스의 기존 데이터를 TUBADBENGINE에서 사용하는 인코딩에서 UTF로 변환하는 것입니다. CodeIgniter에서는 -8 인코딩이 필요합니다. 이를 수행하려면

  1. UTF-8 인코딩을 사용하도록 데이터베이스 연결을 조정합니다.
  2. CONVERT 함수를 사용하여 영향을 받는 열의 데이터를 변환합니다. 예:
UPDATE tnewsgroups SET fName = CONVERT(INARY CONVERT(fName USING latin1) USING utf8);

데이터가 변환되면 새 스크립트와 기존 스크립트 모두 페르시아어 문자를 올바르게 표시해야 합니다.

위 내용은 내 페르시아어 문자가 이전 웹사이트 스크립트와 새 웹사이트 스크립트 간에 다르게 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.