2011-08-01 2 views
0

사용자가 일부 정보를 입력하는 텍스트 영역이 있습니다. 일부 사용자는 자신의 정보에 작은 따옴표와 큰 따옴표를 입력하고 페이지에서 마지막으로 보는 것은 홑 따옴표가있는 이상한 문자의 모든 유형입니다. 간단히 mysqli_real_escape_string() 함수와 trim() 함수를 사용하여 정보를 저장하고 htmleneties()를 사용하여 PHP로 표시한다.Mysql 또는 PHP가 따옴표를 올바르게 변환하지 않습니다.

내 데이터베이스 이미 문자가 표시되어 있으므로 작은 따옴표 나 큰 따옴표가 저장되는 이유는 무엇입니까? 감사!

+0

데이터베이스의 인코딩은 무엇입니까? 출력 HTML의 인코딩은 무엇입니까? –

+0

db의 인코딩은 MySQL의 charset입니다 : UTF-8 Unicode (utf8)이고 HTML Ben

답변

2

일치하지 않는 문자 집합입니다. 동일한 문자 집합이 데이터베이스, 데이터베이스 연결, 데이터베이스 테이블, 테이블 열, 페이지를 제공 할 때 사용되는 콘텐츠 형식 헤더 및 페이지의 콘텐츠 형식 메타 태그에 사용되는지 확인하십시오. 또한 isy-8859-1 인코딩 된 텍스트에 대해서만 안전하기 때문에 PHP 문자열 함수를 멀티 바이트 인코딩에 사용하지 않는 것이 좋습니다. 영어가 아닌 다른 언어를 허용하고 표시하려면 UTF-8을 사용해야합니다.

+0

databse는 utf8_general_ci이고 내 html은 입니다. 똑같은가? – Ben

+0

'utf8_general_ci'는 문자 집합이 아니라 데이터 정렬입니다. 너는 잘못된 것을보고있다. –

0
  • 당신은 DB에서 UTF8 인코딩을해야합니다
  • 당신이 이름

mysql_query("SET NAMES utf8"); 

  • 당신이 PHP에서 문자 집합을 설정해야을 설정해야합니다

header("Content-type: text/html;charset: utf-8"); 
+0

지금 phpmyadmin을보고 있는데 utf8 : utf8_unicode_ci, utf8_general_ci 등이 있습니다. 어느 것을 선택해야합니까? – Ben

+0

general_ci ..... – genesis

+0

정렬은 정렬과 같은 실제 내용에는 영향을 미치지 않습니다. 나는 당신이 인코딩을 의미한다고 생각합니다. –

관련 문제