나는이 간단한 PHP 스크립트를 가지고 있는데,이 스크립트는 mySQL 데이터베이스를 검색하여 그 결과를 사용자에게 출력한다. 내 문자셋으로 ISO-8859-1
을 사용했지만 UTF-8
을 사용하는 것이 좋습니다. 하지만 이전의 캐릭터 세트에서 새로운 캐릭터 세트로 옮기는 데 어려움이 있습니다. UTF-8이 나에게 물음표를 준다.
- 가 정렬
utf8_unicode_ci
와UTF-8
인코딩 된 데이터베이스와 테이블을 만들었습니다. - 내 PHP 파일을
UTF-8
에 인코딩했습니다. - 메타 문자 집합을
UTF-8
으로 설정하십시오. - 모든 텍스트를 Lighty (Lighttpd)에서
mime-types
에서UTF-8
에서create-mime.assign.pl
으로 설정하십시오. 난 그냥 데이터베이스를 검색하지 않고echo "ö";
을 할 경우 내가ö
같은 문자 데이터베이스,ü
등의 데이터를 검색 할 때
이제, 문제가 발생, 그것을 잘 작동합니다. 데이터베이스에 문제가있을 것 같습니까?
나는 다음을 시도했습니다, 그들은 내 문제를 해결했습니다
- 설정 메타 캐릭터 세트 (어떤 이상한 이유는 작동하지만 echo'd "오"를 나누기 위해,)
ISO-8859-1
에. - 출력 주위에
utf8_decode()
함수를 설정하십시오. mysql_select_db()
다음에mysql_set_charset('utf8');
을 선언 한 후.
여러 가지 해결책을 찾았지만 그 이유는 모르겠지만 그 이유는 모르겠습니다. 출력에 utf8_decode()
을 사용하거나 mysql_set_charset()
기능을 사용하는 것은 나쁜 습관입니까?
데이터베이스 커넥터를 통과 할 것으로 예상 보장하기 위해 데이터를 검색/전송하기 전에
를 사용할 수 있을까? .. 아, 아니 ... 네, 당신은 커넥터 (mysql_set_charset)에 charset을 설정해야합니다 - 이것은 더 이상 사용되지 않습니다. 적어도 MySQLi를 사용해야합니다.) 그렇지 않으면 utf-8 PHP에서 궁극적으로 화면에 전달하기 전에 데이터베이스에서 iso 8859-1 (MySQL 커넥터의 기본값)을 사용하면 '?' – CD001
@ CD001 왜 MySQL 커넥터의 기본값은 ISO-8859-1입니까? 오, 그럼 그게 문제 야. 아래에서 fullybaked의 답변을 사용하려고합니다. – AnonymousJ
Heheh - 예, 알고 있습니다 ... http://php.net/manual/en/mysqli.set-charset.php 또는 http://uk3.php.net/manual/en/function.mysql-set을 시도하십시오. -charset.php, mysql_ * 함수 전체는 이제 더 이상 사용되지 않습니다. – CD001