>백엔드 개발 >PHP 튜토리얼 >내 새 CodeIgniter 스크립트는 손상된 페르시아어 문자를 표시하지만 이전 스크립트는 표시하지 않는 이유는 무엇입니까?

내 새 CodeIgniter 스크립트는 손상된 페르시아어 문자를 표시하지만 이전 스크립트는 표시하지 않는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-27 05:30:15182검색

Why Does My New CodeIgniter Script Display Corrupted Persian Characters While the Old Script Doesn't?

데이터베이스의 이상한 문자 인코딩: 이전 스크립트 디코딩, 새 스크립트 실패

문제 설명:

이전 스크립트에서 새로운 CodeIgniter 기반 스크립트로 웹사이트를 마이그레이션하는 것은 문자 인코딩에 문제가 발생했습니다. 기존 스크립트는 데이터베이스에 저장된 페르시아어 문자를 표시할 수 있지만 새 스크립트는 손상된 텍스트를 표시합니다.

분석:

데이터베이스 테이블과 열은 한 부씩 정렬하여 구성됩니다. utf8_persian_ci. 새 스크립트는 또한 UTF-8을 문자 세트 및 대조로 사용합니다. 문제는 이전 TubaDBEngine을 사용할 때 문자가 원래 데이터베이스에 저장되는 방식에서 발생합니다.

이전 스크립트 동작:

페르시아어 문자가 TubaDBEngine을 사용하는 데이터베이스의 경우 UTF-8이 아닌 다른 인코딩으로 저장되어 다음과 같은 문자가 표시되었습니다. 데이터베이스의 "زمران". 그러나 이전 스크립트는 이러한 문자를 올바르게 디코딩하고 표시할 수 있었습니다.

새 스크립트 문제:

새 스크립트는 UTF-8에 맞게 올바르게 구성되었지만 TubaDBEngine의 인코딩을 사용하여 원래 데이터베이스에 저장된 문자를 디코딩합니다. 결과적으로 새 스크립트는 데이터를 가져올 때 손상된 텍스트를 표시합니다.

해결책:

  1. 다음을 사용하여 데이터베이스에 저장된 데이터를 UTF-8로 변환합니다. 다음과 같은 쿼리:
SELECT CONVERT(BINARY CONVERT(fName USING latin1) USING utf8) FROM tnewsgroups
  1. UPDATE 문을 사용한 데이터베이스:
UPDATE tnewsgroups SET fName = CONVERT(BINARY CONVERT(fName USING latin1) USING utf8)

데이터 변환 후 새 스크립트는 페르시아어 문자를 올바르게 가져와 표시할 수 있어야 합니다.

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

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