壊れたエンコーディングに関する問題の解決:accept-charset

このような問題に直面しました:多くのプログラマーは、accept-charsetの存在を知らないか、この属性を無視します。 現在の会社に来て、REST APIサービスの開発を開始しましたが、「XML応答が壊れている...」というバグが時々私に落ちました。 GUIをもう少し掘り下げる必要があり、お気に入りのタグがないことがわかりました。 別の属性が必要なのはなぜですか?





このリンク (http://www.w3.org/TR/html401/interact/forms.html#adef-accept-charset)でW3Cに長い間記述されているよりも、accept-charsetの方が優れています



状況を想像してみましょう。



-あなたはウェブサイトを持っています

-メタでutf-8エンコーディングを指定しました

-utf-8(ベース、バックエンドなど)で動作するようにサーバー部分を構成しました

あなたはテストしています:サイトに行き、フォームから送信してください-すべては問題ありません。 ただし、問題は多くの人が忘れていることです。

1.ほとんどの場合、ブラウザには自動エンコードがあり、サイトはサーバー側にデータを正しく投稿します

2.独自のエンコーディングを手動で設定する人がいます

3.サイトで遊ぶファンがいます

4.その他:ボット、テスト用ソフトウェアなど



FORMタグにsabzhe属性がない場合、この場合に何が起こりますか:

1.ウェブサイトを開きます

2.ブラウザでエンコードを変更し、ISO-8859-1にします

3.ロシア語でデータを入力しようとします。たとえば、ウムラウトを使用してドイツ語で入力します。 さらに進みたい場合は、スペシャルを試してください。 キャラクター

4.フォームを投稿する

5.データベース内のエントリを開き、文字がどのエンコーディングでそこに到達し、サーバー側でどのように処理されたかを確認します



回答 :ブラウザはエンコードの定義における標準と特定のシーケンスに従うため、ISO-8859-1でエンコードされたテキストが表示されます。つまり、ISO-8859-1が厳密に指定されている場合、ブラウザはISO-8859-1に従い、フォームデータを送信する



これに対処するには?



トピックの見出しを見てください。はい、FORMタグ内のaccept-charset = "utf-8"がこの問題の状況からあなたを救います。 この属性は、フォームからのデータがutf-8エンコードのみで送信され、他のデータは送信されないという必要な「知識」をブラウザに提供します



結論 :独創的なものはすべて単純ですが、情報は私たちの時代に世界を所有しています。



PS youtubeはまだ謎のままです。意図的にaccept-charsetを使用せず、代わりに同じことを行う独自の機能を使用しています(javascriptのようです)



All Articles