<head>
<meta charset="ISO-8859-7">
</head>
私はフォームを使用していて、<meta charset="ISO-8859-7">
タグがテキスト領域内に入力されるテキストをエンコードしていることを確認しています。ファイルを格納するために使用されたエンコーディングメソッドがそうでないこと。 (& #D;)文字はフォーム上でどのように送信されますか?
は私がタイプされた文字が<meta charset="ISO-8859-7">
タグでspeciefiedエンコーディングの一部でない場合、文字はreferencedになることを見てきました
私はフォームがバイトを送信したと仮定しました。コード化された配列は推測された。 私が何か文字を入力すると、エンコーディングが解釈するバイトになります。私は、この文字は、エンコーディングの一部ではないですが、それならば、それは、それはA5
を表している位置のバイトとしてどんなにを送信する必要があります"¥"
形式で文字を入力<meta charset="ISO-8859-7">
と例えば
表現することができます(これはどのエディタでも普通に行われます)。
しかし、フォームはバイトとして送信しません。文字は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=""
が指定されていない場合、フォームは常にaccept-charset=""
属性を持つか<meta charset="">
タグとそれに応じて送信されます、ファイルを格納するために使用されているものエンコーディング問題ではありません。
encode.php: 文字列はファイルによって決してコード化されません。作業と表現が可能ですが、ファイルを格納するために使用されるエンコーディングはそれとは関係ありません。
なぜUTF-8を使用しないのですか? – CuriousMind
私はUTF-8を使用しますが、私はこの問題について疑問を抱いていました。 – nEAnnam
'Content-Type'ヘッダが競合する文字セットを送信することはできますか? – cmbuckley