Facebook charset algılama mekanizması?

4 Cevap php

Bugün, facebook.com HTML kodu içine baktı ve böyle bir şey bulduk:

<input type="hidden" value="€,´,€,´,水,Д,Є" name="charset_test"/>

Bu <form>...</form> içinde iki kez tekrarlanır bulunuyor.

Sunucu tarafında istemci charset algılama çeşit - Bu kod için yararlı olabilir Herhangi bir fikir ne? Bildiğim kadarıyla, tarayıcı charset neyse HTTP isteği (bir "Accept-Karakter" başlığını) iletiliyor.

4 Cevap

Sunucu tarafında istemci charset algılama çeşit - Bu kod için yararlı olabilir Herhangi bir fikir ne?

Görünüşe göre öyle.

Bunu kodlayan pek çok yolu vardır, çünkü Euro işaret charset tespiti için yararlıdır:

  • UTF-8, E2 82 AC
  • Windows-1251 88
  • Diğer windows-125x kodlamaları 80
  • ISO-8859-7 A4, -15, -16
  • GB18030 A2 E3
  • Shift-JIS 85 40
  • vb

Bildiğim kadarıyla, tarayıcı charset neyse HTTP isteği (bir "Accept-Karakter" başlığını) iletiliyor.

Bu supposed HTTP Content-Type başlık içinde bulaşan, ama o kullanıcı arayüzleri aslında doğru almak anlamına gelmez.

Ben onlar ne olacağını karakterleri biliyorum çünkü istemci anında gerçek kodlama algılamak, doğru hatta belki de UTF-8 olarak kodlanmış ve istek gönderildi emin olmak için alıcı komut dosyası bu eşleşen sanırım.

Eğer doğru hatırlıyorum - Bir keresinde onunla uğraşmak zorunda - bazı durumlarda IE6 form kodlama ile ilgili sorunlar olmuştur.

&euro;,&acute;,€,´,水,Д,Є

Ben bazı tarayıcı send ve ´ olarak &acute; ile aynı &euro; aynı, sanırım

[0] == charset_test [2] ve charset_test [1] == charset_test [3] Yani charset_test gibi kontrol edebilirsiniz

Diğerleri diğer karakterler için, ben hiçbir ipucu var.水 muhtemelen CJK için test edin.

Pekka dediği gibi, bu istek charset tespit edebilmek için. HTTP protokolü, bir isteği charset belirtmek için bir yol sağlamaz. Bu nedenle, bir protokol dış sözleşmeler güvenmek zorundadır. Genellikle tarayıcılar tahmin edilebilir, ama bu hile% 100 emin olmak için tek yoldur.

Ayrıca bakınız: http://www.phpwact.org/php/i18n/charsets