2009-12-15 7 views
6

MySQL 데이터베이스에 저장된 제품 정보를 출력하려고하는데 다이아몬드 내부에 물음표가있는 이상한 문자를 작성하고 있습니다.PHP MySQL 데이터베이스 이상한 문자

나는 그것을 인코딩/UTF8의 문제가 될 수 있다고 생각하지만, 내가 원하는 인코딩을 지정한 :이 권한은

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

인가? 무엇을 확인해야합니까? 데이터베이스에서오고 데이터 만이 이상한 문자가있는 경우

+0

을 같은 이상한 문자 문제에 관한 phpadvent에 게시 : http://phpadvent.org/2009/character-sets-by-paul-reinheimer – vsr

답변

20

사용하여 MySQL의 연결이 UTF8도 있는지 확인 : 다른 쿼리 이전

mysql_query("SET NAMES UTF8"); 

합니다. 그렇지 않으면 문자가 '손으로 쓴'파일에도 나타나는 경우 파일이 편집기에 UTF-8로 저장되었는지 확인하십시오. 또한 PHP를 통해 캐릭터 헤더 설정을 시도 할 수 있습니다 :

header('Content-type: text/html; charset=UTF-8'); 

은 또한 쿼리하는 테이블의 모든 필드가 예를 utf8_general_ci를 들어, 일부 UTF-8 변형으로 설정되어 있는지 확인합니다.

+0

좋은 설명, Tatu. – BenTheDesigner

+0

mysql_query ("SET NAMES UTF8"); 내 wordpress 게시물에 근무 추출 문제 (다이아몬드의 물음표). 감사합니다. – themerlinproject

1

타투가 말한 것을 강조.

이것은 인코딩에 읽기 좋은 배경 : 그 문제가 있었다 마지막 시간이 솔루션 타투 Ulmanen는 말과 비슷하지만 약간 다른했다

4

나는 당신이되고 결과를 원하는 가정 .... 나는이 MySQL의에서 기본 characterset이기 때문에 라틴 말, 그 대부분의 시간을 사용하는 것입니다 UTF8에서

당신이 PHP 스크립트 UTF8이
  • 만들 인코딩 저장
    • 확인하여 HTTP 헤더 (또는 메타 태그)를 알려줍니다 그 출력은 UTF8
    • 입니다 MySQL의 모든 테이블은 UTF8 할 수 있어야
    • 마지막으로 클라이언트와 서버 간의 연결은 utf8이어야합니다. (이것은 php.ini의 설정 또는 DB에 대해 다음 쿼리를 만들어 어딘가에 처리 할 수있다 :. 당신이 4 점을 따르는 경우에 SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'

    혹시 깨진 인코딩에 문제가해서는 안