mySQL 테이블의 데이터 유형이 TEXT이고 collation이 utf8_unicode_ci로 설정된 테이블 정렬 (알 수없는 이유로)이있는 필드가있는 프로젝트에서 작업하고 있습니다.mySQL TEXT 데이터 유형이 이상하게 표시되는 문제
-V MySQL의 출력은 "MySQL을 사용하여 5.2의 readline 데비안 리눅스 GNU (x86_64의) 미국 14.12 DISTRIB의 5.0.51a, VER"
PHP 버전 5.2이다.
이 필드의 일부 행에있는 데이터는 "[Dan S. Leyrer?]"입니다. 명령 줄에서 레코드를 쿼리하면 정상적으로 보입니다. phpMyAdmin에서 레코드를 보거나 편집하면 Chrome 및 IE9에서 정상적으로 보입니다. 그러나 필드가 IE9, Chrome, FF 등 PHP 스크립트 출력의 일부로 표시되면 물음표는 아포스트로피 "[Dan S. Leyrer ']"로 표시됩니다. IE9 및 Chrome의 phpMyAdmin 및 명령 줄을 통한 mySQL 모니터의 편집을 시도했으며 디스플레이 변경이 없었습니다.
틀림없이, 나는 utf8_encode(), utf8_decode(), htmlentities()에 대한 호출을 추가하려고 시도했다. 효과가 없습니다.
다른 필드를 편집 해 보았는데 결국 "?" TEXT 데이터 유형이있는 모든 필드에이 문제가 PHP 출력에 표시되었지만 동일한 utf8_general_ci 데이터 정렬을 사용하는 VARCHAR 필드에는 문제가 없었습니다.
어떻게 될까요?
나는 이것을 열심히 도와 준 모든 사람에게 많은 사과를합니다.
내 전임자가 스파게티 코드에서이 문자열에 일부 처리를 적용했습니다. 나는 그것을 알지 못했다. 나는 UTF8 문제를 처리하기위한 노력의 일환이었다 가정
function scrub_string($input_string) {
$replace_array = array("?","\x92","?","\x91");
$input_string = str_replace($replace_array,"'",$input_string);
$output_string = utf8_encode($input_string);
return $output_string;
}
나는 뉴 올리언스에 와서 ... 낭비되는 시간이 매우 매우 유감스럽게 생각 나는 맥주를 구입하고있다.
http://akrabat.com/php/utf8-php-and-mysql/는 몇 가지 포인터를 제공해야합니다. –
알아두기, 테이블 데이터 정렬은 새 열에 대한 기본값입니다. 변환 및 저장의 경우 연결 문자 세트 및 열 데이터 정렬 만 중요합니다. – AndreKR