올바른 인코딩을 얻는 것은 정말 까다 롭습니다. 레이어가 너무 많습니다.
PHP의 SQL 명령 "SET CHARSET utf8"은 데이터베이스에 저장되는 방법에 관계없이 클라이언트 측 (PHP)이 utf8의 데이터를 가져 오도록합니다. 물론 먼저 올바르게 저장해야합니다.
DDL 정의와 실제 데이터
테이블 / 열에 대해 정의 된 인코딩이 실제로 데이터가 해당 인코딩에 있음을 의미하지는 않습니다. 테이블이 utf8
다른 인코딩으로 정의 되었지만 저장된 경우 MySQL은이를 처리하고 utf8
문제가 발생합니다. 즉,이 문제를 먼저 해결해야합니다.
확인할 사항
각 계층에서 데이터 흐름을 인코딩하는 방법을 확인해야합니다.
- HTTP 헤더, 헤더를 확인하십시오.
- 요청 본문에서 실제로 전송 된 내용을 확인하십시오.
- MySQL에는 거의 모든 곳에서 인코딩이 있다는 것을 잊지 마십시오.
- 데이터 베이스
- 테이블
- 기둥
- 전체 서버
- 클라이언트
어디에나 올바른 것이 있는지 확인하십시오.
변환
예를 들어 데이터를 수신 windows-1250
하고에 저장하려면 저장 utf-8
하기 전에 다음 SQL을 사용하십시오.
SET NAMES 'cp1250';
DB에 데이터가 windows-1250
있고 검색하려는 utf8
경우 다음을 사용하십시오.
SET CHARSET 'utf8';
몇 가지 추가 참고 사항 :
- 데이터를 표시하기 위해 너무 "스마트 한"도구에 의존하지 마십시오. 예를 들어, phpMyAdmin은 인코딩이 정말 나쁩니다. 그리고 모든 레이어를 통과하므로 찾기가 어렵습니다.
- 또한 Internet Explorer는 이상한 규칙에 따라 인코딩을 "추측"하는 어리석은 행동을했습니다.
- 인코딩을 전환 할 수있는 간단한 편집기를 사용하십시오. MySQL Workbench를 추천합니다.