<head>
<meta charset="ISO-8859-7">
</head>
Я работал с формами и вижу, что тег <meta charset="ISO-8859-7">
кодирует текст, который будет напечатан в текстовой области.Дело в том, что метод кодирования, используемый для хранения файла, не подходит.
Я видел, что если введенный символ не является частью кодировки, указанной тегом <meta charset="ISO-8859-7">
, символ будет ссылка (& # D;)
Я предполагал, что форма посылала последовательности байтов из указанного кодирования.Потому что, если я наберу символ, какой бы он ни был, это будет байт, который будет интерпретировать кодировка.
Например, с типом <meta charset="ISO-8859-7">
i в форме символ "¥"
Thischar не является частью кодировки, но он должен отправлять в байтах позицию, которую он представляет A5
, независимо от того, может ли она быть представлена (это обычно делается любым редактором).
Но неформа не отправляет ее в виде байта, скорее символ ссылается .
код:
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 : строка никогда не кодируется файлом.Может работать и отображаться, но кодировка, используемая для хранения файла, не имеет к этому никакого отношения.