2012-08-16 6 views
106

선언되지 않았습니다 문서에 US-ASCII 범위 밖의 문자가 포함되어있는 경우 일부 브라우저 구성에서 페이지의 문자 인코딩을 문서 또는 전송 프로토콜에서 선언해야합니다. "문자 인코딩은

insert.html :

<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
<title>insert page</title></head> 
<body> 
<h1> Insert Page </h1> 
    <form action="insert.php" method="post" enctype="application/x-www-form-urlencoded" > 
    <p>Title:<input type="text" name="title" size="40"/></p> 
    <p>Price:<input type= "text" name="price" size="40" /></p> 
    <p><input type="submit" value="Insert" /> 
    <input type="reset" value="Reset" /></p> 
    </form>  
</body> 
</html> 

insert.php : 내 코드에서 문제가 어디 있는지 모릅니다

<?php 
    $title = $_POST["title"]; 
    $price = $_POST["price"]; 

    echo $title; 
?> 

. 도와주세요.

+2

좋은 독서 추가 : [HTML에서 문자 인코딩을 선언] (http://www.w3.org/International/questions/qa-html-encoding-declarations) –

+0

를 .html 페이지를 .php :'insert.html' ->'insert.php'라고 이름을 붙이십시오. 그리고 폼 핸들링 파일 ('insert.php')을'insert_action.php' 또는 무엇인가로 명명하십시오. (PHP를 사용할 때'html'과'php' 페이지가 섞이지는 않을지 모르겠군요.) –

+0

오, 이런, 낡은 질문이었습니다. 새로운 답변으로 인해 날짜를 확인하지 못했습니다 ... –

답변

15

게시 할 때 브라우저는 $title 만 출력합니다. 모든 HTML 태그와 doctype이 사라집니다. 당신은 당신의 insert.php 파일에있는 사람들을 포함해야합니다

<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
<title>insert page</title></head> 
<body> 
<?php 

    $title = $_POST["title"]; 
    $price = $_POST["price"]; 

    echo $title; 


?> 
</body> 
</html> 
+0

내가 포함했지만 아무것도 표시하지 않습니다. – xing

+1

감사합니다. 비슷한 문제가 있었는데 답변이 도움이되었습니다 (메타 http-equiv ... 행이 누락되었습니다). –

1

귀하의 초기 페이지가 양식을 포함하는 완전한 HTML 페이지를, 내용은의이 버튼을 클릭 제출할 때 insert.php에 게시하지만, insert.php된다 양식의 내용을 처리하고 데이터베이스에 추가하거나 새 페이지로 출력하는 등의 작업을 수행해야합니다. 귀하의 현재 insert.php는 제목 필드의 내용을 출력하기 때문에 브라우저가 HTML 페이지로 해석하려고 시도합니다. 그리고 HTML이 유효하지 않기 때문에 (즉, 'HTML' 태그 등).

귀하의 insert.php가 필요한 HTML을 출력하고 어딘가에 양식 데이터를 삽입해야합니다.

<?php 

    $title = $_POST["title"]; 
    $price = $_POST["price"]; 

    echo '<html xmlns="http://www.w3.org/1999/xhtml">'; 
    echo '<head>'; 
    echo '<meta http-equiv="content-type" content="text/html; charset=utf-8" />'; 
    echo '<title>'; 
    echo $title; 
    echo '</title>'; 
    echo '</head>'; 
    echo '<body>'; 
    echo 'Hello, world.'; 
    echo '</body>'; 

?> 
+1

이 코드로 시도했지만 'echo'가 출력으로 표시됩니다. – xing

+0

이상합니다.원래 질문에 추가하여 코드를 게시 할 수 있습니까? – gkrogers

189

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

두 번째 줄은 docytype html : 에 대한 W3 유효성 검사기에서이 오류를 생성합니다. – yitwail

+3

+2

@yitwail 두 번째 줄을 제외 시켰을뿐입니다. – Evorlor

22

내가 가장 기본적인 상황과 같은 문제가 내 문제가 함께 해결되었다하여 HTML 템플릿의 HEAD 섹션의 첫 번째 줄이 추가 : 예를 들어

이 메타를 머리에 삽입 :

<meta charset="UTF-8"> 

문자 인코딩 (실제로는 UTF-8) html 문서가 선언되지 않았습니다.

2

.html에서 .php로 파일을 변경해야합니다.

이 다음 줄

header('Content-Type: text/html; charset=utf-8'); 
관련 문제