2011-05-15 7 views
3

문제점 : 외래 문자가 있어야하므로 표시되지 않습니다. 여기에는 독일어, 일본어, 러시아어 및 영어를 제외한 모든 언어가 포함됩니다 (완벽하게 작동 함). Ones PHP는 jQuery AJAX를 통해 MySQL에 전화를 걸면 정보를 반환하고 페이지에 표시해야한다. 데이터가 호출되어 표시됩니다. 그러나 영어가 아닌 문자의 경우 결과는 "?"로 표시됩니다.UTF8 및 일본어 문자

phpMyAdmin에서 표시되는 데이터는 일본어, 독일어 등으로 표시되어야합니다. 그러나 MySQL에서 가져온 것은 반환되지 않습니다.

브라우저가 모든 언어 인코딩을 지원하므로이 문제는 발생하지 않습니다.

MySQL의 부호화 : UTF8_GENERAL_CI

페이지 인코딩 : UTF-8

<meta charset="utf-8" /> 

가 phpMyAdmin을 통해 볼 MySQL의 것들 파인 것 때문에 문제의 MySQL PHP함으로써 데이터 페치 될 수있다. 그래서 여기에 MySQL에서이 데이터를 가져 오는 데 사용되는 코드가 있습니다. 이 파일에 인코딩을 포함하지 않으면.

view.php는

$q = mysql_query("SELECT * FROM `notice` WHERE nid = '".$nid."'"); 
     $a = mysql_fetch_array($q); 

      $nid = stripslashes($a['nid']); 
      $note = stripslashes($a['note']); 
      $type = stripslashes($a['type']); 
      $private = stripslashes($a['private']); 
      $date = stripslashes($a['date']); 
      $author = stripslashes($a['author']) 

(부호화 문제 복귀 ???의 원인이 될 수 MySQL의 데이터를 필요로 페치);

추신. 더 명확하게 편집되었습니다.

+0

페이지로 연결되는 링크? 또는 일부 페이지 소스를 게시 하시겠습니까? –

+0

문자 집합을 선언하는 것만으로는 충분하지 않습니다. 데이터는 실제로 해당 문자 집합에 * 있어야합니다. 그렇지? –

+0

잘 UTF8_general_ci –

답변

0

시도 쿼리하기 전에 어딘가에

mysql_query("SET NAMES utf8"); 

를 호출. 물론 PHP를 사용하고 있다면.

+0

시도하고 아직도 ??? 그래서 메타뿐만 아니라 일하지 않으므로 왜 이런 일이 일어나는지 자세히 살펴 봐야합니다. –

+0

@PT Desu : 삽입 할 때 이것을 사용하지 않았기 때문에 데이터베이스의 데이터가 손상되었을 수 있습니다. 데이터가 괜찮습니까? 아니면 ?? phpMyAdmin 또는 다른 도구에서? – nitro2k01

+0

이상하게 예, 특정 행을 보려면 phpMyAdmin의 한자로 표시됩니다. 모든 언어는 phpMyAdmin에서 완벽하게 작동합니다. 독일어, 러시아어, 일본어 또는 다른 사람이 될 수 있습니다. 그러나 페이지 진리에 출력하려고 할 때 PHP 호출로 반환됩니다. ??? 브라우저 문제가 아니기 때문에 오히려 블록을 보았을 것입니다. " 이것은 PHP가이 문제를 어딘가에 생성하고있는 데이터를 가져 오는 사실을 나타냅니다. –

-1

은 참조 : http://www.w3.org/TR/html4/charset.html#h-5.2.2

그래서 사용한다 : 은 <META http-equiv="Content-Type" content="text/html; charset=UTF-8">

이상적으로이 정보는 HTTP 응답의 헤더에 제공해야한다.

+0

원래 작동하지 않았다 –

+1

1) OP의 선언은 유효한 HTML5이며 일반적으로 작동합니다. 2) ?? 버그는 DB 문제의 징조입니다. 일반적으로 브라우저 측 charset 문제는 ​​다르게 나타납니다. (물음표가 아닌 "임의의"문자가 깨져서) – nitro2k01

+0

전체 한자 지원 및 기타 언어 지원이있는 일본어 사이트에서 완벽하게 작동하므로 브라우저 문제가 아닙니다. DB에서 작성자 이름은 간지로 작성되었지만 ???로 표시됩니다. –

5

데이터베이스의 문자 집합을 연결에서 UTF-8로 설정해야 할 가능성이 높습니다.

사용 방법은 사용중인 데이터베이스 라이브러리에 따라 다릅니다.

이전 MySQL의 라이브러리에서

, 그것은

mysql_query("SET NAMES utf8"); 

(사전 MySQL의 5.0.7)와 MySQL 5.0.7 및 최신위한

mysql_set_charset("utf8"); 

이 될 것입니다.

+0

MySQL 5.0.45-community-nt 사용 –