데이터베이스의 이상한 문자 인코딩: 이전 스크립트 디코딩, 새 스크립트 실패
문제 설명:
이전 스크립트에서 새로운 CodeIgniter 기반 스크립트로 웹사이트를 마이그레이션하는 것은 문자 인코딩에 문제가 발생했습니다. 기존 스크립트는 데이터베이스에 저장된 페르시아어 문자를 표시할 수 있지만 새 스크립트는 손상된 텍스트를 표시합니다.
분석:
데이터베이스 테이블과 열은 한 부씩 정렬하여 구성됩니다. utf8_persian_ci. 새 스크립트는 또한 UTF-8을 문자 세트 및 대조로 사용합니다. 문제는 이전 TubaDBEngine을 사용할 때 문자가 원래 데이터베이스에 저장되는 방식에서 발생합니다.
이전 스크립트 동작:
페르시아어 문자가 TubaDBEngine을 사용하는 데이터베이스의 경우 UTF-8이 아닌 다른 인코딩으로 저장되어 다음과 같은 문자가 표시되었습니다. 데이터베이스의 "زمران". 그러나 이전 스크립트는 이러한 문자를 올바르게 디코딩하고 표시할 수 있었습니다.
새 스크립트 문제:
새 스크립트는 UTF-8에 맞게 올바르게 구성되었지만 TubaDBEngine의 인코딩을 사용하여 원래 데이터베이스에 저장된 문자를 디코딩합니다. 결과적으로 새 스크립트는 데이터를 가져올 때 손상된 텍스트를 표시합니다.
해결책:
SELECT CONVERT(BINARY CONVERT(fName USING latin1) USING utf8) FROM tnewsgroups
UPDATE tnewsgroups SET fName = CONVERT(BINARY CONVERT(fName USING latin1) USING utf8)
데이터 변환 후 새 스크립트는 페르시아어 문자를 올바르게 가져와 표시할 수 있어야 합니다.
위 내용은 내 새 CodeIgniter 스크립트는 손상된 페르시아어 문자를 표시하지만 이전 스크립트는 표시하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!