2010-07-01 4 views
3

나 HTML 파일을 생성 한 아래의 코드를 사용하여 DB MySQL의 쿼리 후에 '수 "(PHP는 HTML 페이지 문자셋 문제를 포함

$myFile = "page.htm"; 

$ FH =하면 fopen ($의 myFile,'w ') 또는 다이 t 파일 열기 "); fwrite ($ fh, $ row [ 'text']); fclose ($ fh);

msql db에서 텍스트는 utf8_general_ci를 사용하여 인코딩됩니다. 아래 그림과 같이 는하지만 난 PHP는 웹 페이지에 포함 할 필요가 : 난에 작성하는 경우 이제

<meta http-equiv="content-type" content="text/html; charset=utf8" /> 

을 : PHP는 웹 페이지 헤더에 UTF8 캐릭터 세트를 사용을 염두에

<?include('page.htm');?> 

베어링 db 중세 악센트 (è à ì) 또는 견적 문자로 몇 가지 문자와 내가 직접 page.htm 열고 db에 내가 다 괜찮아 보이지만, 볼 때 내가 PHP 페이지에서 볼 때 물음표 문자를 참조하십시오 원래 내가 원했던 것 대신에. 왜?! 미리 감사드립니다.

답변

1

문제는 아마도 mySQL 데이터베이스 또는 데이터베이스 연결에 잘못된 인코딩 집합이있는 것입니다.

테이블이 모두 100 % utf8_general_ci 인 경우 쿼리를 수행하기 전에 mysql_query("SET NAMES utf8;");을 시도하십시오. 그러면 연결이 UTF-8로 설정됩니다.

+0

또한 mysql_query ("SET NAMES utf8;");을 추가했습니다. 하지만 아무것도 아니야. – EnneKappa

+0

일반적인 UTF-8 문제에 대한 해결책은 없습니다. 헤더, 컨텐트, HTML에서 이스케이프 대 JSON에서 이스케이프 대 입력 필드에서 이스케이프 대 PIT에서 이스케이프 대 MySQL에서 이스케이프 - 실제로 볼 수있는 것은 하나도 없습니다. – HoldOffHunger

5

문제는 HTTP 응답 헤더 'Content-Type'에 의해 실제로 설정된다는 것입니다. 필요한 경우 출력 전에 PHP 파일에 다음을 추가해야합니다. 상단).

  1. 그건 : 명확히하기 위해

    <?php 
    header('Content-Type: text/html; charset=utf8'); 
    

    , 즉 하지 HTML 파일이 포함 :

    사이드 포인트 (들), HTML 파일을 포함하는 PHP에 있어야합니다 좋은 시작은 <이 아닌 전체 열기 태그 <? php를 사용 하시겠습니까? 이것은 모든 (많은) 서버에서 지원되지 않기 때문에

  2. include는 함수가 아닌 명령문이므로 일반적으로 다음과 같이 작성합니다. include 'page.htm';
+0

html을 생성하는 PHP 웹 페이지와 include가 포함 된 PHP 웹 페이지에도이 내용이 추가되었지만 문제는 지속됩니다. – EnneKappa

5

메타 문자셋은 항상 문제를 해결하지 못합니다. IDE가 실제 UTF-8 파일을 저장하는지 확인하십시오. Dreamweaver의 경우 CTRL-J를 누른 다음 제목/인코딩 옵션을 선택하십시오.

+0

메모장 ++을 사용하고 UTF8 (BOM 없음)의 모든 파일을 저장합니다. – EnneKappa

2

나는 이것을 포함하여 PHP 웹 페이지에 header('Content-Type: text/html; charset=iso-8859-1');을 추가하여 해결했습니다. 왜 작동하는지 모르겠습니다. 나는 iso-8859-1 charset을 사용한 적이 없다. 어쨌든 고마워, !

+0

동적으로 포함 시키려면 모든 문서에 헤더를 추가해야합니다. – pirs

+0

charset = utf-8이 아닌 경우, 문서의 인코딩은 아마도 UTF-8이 아니었을 것입니다. – HoldOffHunger

2

당신이 데이터베이스에서 물건을 가져 오는 중, 명시 적으로 charset을 변경하는 경우 Php에서 db에 대한 실제 연결 문자셋을 utf8 (명시 적으로 utf8)로 설정해야합니다. 그렇지 않으면 내용이 변환됩니다 db 자체의 내용이 올바른 형식 일지라도 전송되는 동안흥미로운 버릇;)

마찬가지로 : mysql_select_db ($ database, $ connect); mysql_set_charset ('utf8', $ connect); // 연결 문자셋을 설정합니다. 당신은 포함 사용할 때 당신은 HTM 파일 PHP 파일,하지를 포함해야하므로

, 그것은, PHP를 코드 : 코드에 대한

0

한 점

<?include('page.php');?> 

확장자를 변경 시도를, 어떻게 지금까지 귀하의 코드가 작동하는지 모르겠습니다 :)

0

시도 별도의 블록을보십시오. 예 mainpage.php :

<?php 
include("php1.php"); 
?> 

<?php 
include("php2.php"); 
?>enter code here