오래된 웹사이트를 다시 작성하려고 합니다.
페르시아어이며 페르시아어/아랍어 문자를 사용합니다.
으아아아거의 모든 테이블/열에는 COLLATE가 utf8_persian_ci
새 스크립트에 codeigniter를 사용하고 있는데
으아아아데이터베이스 설정에서는 문제 없습니다.
여기서 이상한 부분이 있습니다
이전 스크립트는 TUBADBENGINE
或 TUBA DB ENGINE
라는 일종의 데이터베이스 엔진을 사용했습니다. 특별한 것은 없습니다.
기존 스크립트를 사용하여 데이터베이스에 일부 데이터(페르시아어)를 입력했을 때 데이터베이스를 살펴보니 해당 문자가 Ø1مران
으로 저장되어 있었습니다.
이전 스크립트는 데이터를 잘 가져오거나 표시하지만 새 스크립트는 데이터베이스와 동일한 이상한 글꼴/문자 집합을 사용하여 데이터를 표시합니다.
그래서 내가 입력할 때 rather
时,数据库存储的数据看起来像 Ø1مراÙ
,当我在新脚本中获取它时,我会看到 Ø1Ù …راÙ
但在旧脚本中我看到?????
반면에 ???
데이터베이스에 직접 입력하면
물론 데이터베이스에 같은 내용을 저장했습니다 rather
새 스크립트가 매우 잘 표시됩니다
하지만 이전 스크립트에서는 ???
이거 이해하실 분 계신가요?
대형 엔진입니다
https://github.com/maxxxir/mz-codeigniter-crud/blob/master/tuba.php
이전 스크립트 사용 예:
CREATE DATABASE `db` DEFAULT CHARACTER SET utf8 COLLATE utf8_persian_ci; USE `db`;
deceze의 답변은 매우 훌륭하지만 수동으로 테스트하지 않고도 많은 수의 레코드를 처리하는 데 도움이 될 수 있는 몇 가지 정보를 추가할 수 있습니다.
컨텐츠를
CONVERT(BINARY CONVERT(field_name USING latin1) USING utf8)
失败,则会打印NULL
而不是field_name
변환하면.그래서 저는 다음을 사용하여 해당 기록을 찾았습니다.
으아악또는 이:
으아악UPDATE
이 절은 변환이 성공한 레코드에만 영향을 미칩니다.간단히 말하면, 이 질문은 이전에 수천 번 논의되었기 때문에:
"汉字"
,以 UTF-8 编码。该字节为E6 BC A2 E5 AD 97
와 같은 문자열을 저장합니다.latin1
로 설정된 데이터베이스 연결을 통해 전송됩니다.E6 BC A2 E5 AD 97
,认为它们代表latin1
E6 BC A2 E5 AD 97 바이트를 수신하고 이 바이트가데이터베이스 저장 문자- æ¡ ¡ ¿ 리>
동일한 프로세스를 반대로 수행하면 PHP가 동일한 바이트를 수신한 다음 이를 UTF-8로 처리합니다. 데이터베이스가 문자를 제대로 처리하지 못하더라도 왕복은 PHP에서 잘 작동합니다.
으아아아
utf8이 필요한 것이 아닐 수도 있습니다. 시도해 보십시오. 작동하는 경우 🎜UPDATE 문으로 변경하여 데이터를 영구적으로 업데이트하세요. 🎜utf8
不是您所需要的,请尝试一下。如果有效,请将其更改为UPDATE
아마도