HTML 문서의 문자 인코딩이 선언되지 않았습니다


163

양식의 제출 버튼을 클릭하면 다음 오류 메시지가 나타납니다.

"HTML 문서의 문자 인코딩이 선언되지 않았습니다. 문서에 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;
 ?>

내 코드에서 문제가 어디에 있는지 모르겠습니다. 도와주세요.


3
좋은 읽을 거리 : HTML로 문자 인코딩 선언
Pekka

.html 페이지의 이름을 .php : insert.html-> 로 지정하십시오 insert.php. 그리고 양식 처리 파일 ( insert.php)의 이름을 지정하십시오 insert_action.php. (확실하지가 도움이하지만 혼합하지 않을 경우 htmlphpPHP를 사용하는 경우 페이지를 참조하십시오.)
ZZ-BB

오, 이건 오래된 질문이었습니다. 새로운 답변으로 인해 날짜를 알지 못했습니다 ...
ZZ-bb

@xing, 어떤 브라우저를 사용하고 있습니까?
Pacerier

답변:


279

이것을 HTML 템플릿의 HEAD 섹션에 첫 줄로 추가하십시오.

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

6
두 번째 줄은 docytype html에 대한 W3 유효성 검사기에서이 오류를 생성합니다.Bad value encoding for attribute http-equiv on element meta.
yitwail

3
<meta http-equiv = "Content-Type"content = "text / html; charset = ISO-8859-1">
Scott Stensland

2
@yitwail 방금 두 번째 줄을 제외하고 효과가있었습니다.
Evorlor

1
파이어 폭스를 사용하고 있습니다. 둘 다 입력했는데 이제는 페이지에 아무것도 표시되지 않습니다. 어떻게해야합니까? 미리 감사드립니다
Hendry Tanaka

1
UTF-8로 텍스트 파일을 입력하는 사람은 거의 없습니다. 대부분의 텍스트 파일은 ISO-8859-1 형식입니다. 텍스트 편집기에서 생성하는 내용을보고 ISO-8859-1 인 경우 <meta http-equiv = "Content-Type"content = "text / html; charset = ISO-8859-1">
AgilePro

46

가장 기본적인 상황과 동일한 문제가 있으며이 메타를 머리에 삽입하여 문제를 해결했습니다.

<meta charset="UTF-8">

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


18

글을 $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>

1
감사합니다. 비슷한 문제가 발생하여 귀하의 답변으로 문제를 해결하는 데 도움이되었습니다 (메타 http-equiv ... 줄이 누락되었습니다).
David Miani

7

Firefox에서 양식 응용 프로그램을 실행할 때도 동일한 문제가 발생했습니다. <meta charset="utf-8"/>html 코드를 추가하면 Firefox에서 내 문제가 해결되었습니다.

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8" />
  <title>Voice clip upload</title>
  <script src="voiceclip.js"></script>
</head>

<body>
  <h2>Upload Voice Clip</h2>
  <form id="upload_form" enctype="multipart/form-data" method="post">
    <input type="file" name="file1" id="file1" onchange="uploadFile()"><br>
    <progress id="progressBar" value="0" max="100" style="width:300px;"></progress>
  </form>
</body>

</html>


3

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

이 라인을 추가하십시오

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

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>';

 ?>

이상하다. 원래 질문에 추가하여 코드를 게시 할 수 있습니까?
gkrogers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.