<head>
<meta charset="ISO-8859-7">
</head>
我一直在使用表單,並看到<meta charset="ISO-8859-7">
標記對將在文本區域內輸入的文本進行編碼。這是用來存儲文件的編碼方法不是。字符如何通過表單傳輸?
我已經看到了,如果鍵入的字符不是由<meta charset="ISO-8859-7">
標籤speciefied編碼的一部分,該角色會是referenced(& #D;)
我假設的形式發送的字節來自編碼規範的序列。 因爲如果我鍵入一個字符無論它是什麼,將是一個編碼將解釋的字節。
例如與<meta charset="ISO-8859-7">
i的一個形式的字符"¥"
這炭類型不是編碼的一部分,但它必須發送作爲它代表A5
,如果不管位置的字節可以表示(這通常由任何編輯器進行)。
但是不是,表單不會將它作爲字節發送,而是字符爲referenced。
代碼:
的index.php:
<?php header('Content-Type: text/html; charset=ISO-8859-7'); ?>
<head>
<meta charset="ISO-8859-7">
</head>
<form method="post" action="encode.php" accept-charset="ISO-8859-7">
<p><textarea name="input" maxlength="10" rows="5" cols="100"></textarea></p>
<p><button>Submit</button></p>
</form>
encode.php:
<head>
<meta charset="ISO-8859-7"><!-- Useless, Even if is specified the ISO-8859-1 where the "¥" exist, the form sended a reference char rather an a byte to interpret.-->
</head>
<?php
$input=$_POST["input"];
var_dump($input);
?>
結果的源代碼:
string(6) "¥"
注意:我測試過更改用於存儲文件的編碼。
在 的index.php: 不要緊編碼來存儲文件,表單總是會相應地與accept-charset=""
屬性或與<meta charset="">
標籤如果沒有指定accept-charset=""
被髮送。
並與encode.php: 該字符串從不編碼的文件。可以工作和表示,但用於存儲文件的編碼與此無關。
爲什麼不使用UTF-8? – CuriousMind
我使用UTF-8,但我想知道這個問題。 – nEAnnam
'Content-Type'頭部是否可以發送衝突字符集? – cmbuckley