2010-01-06 3 views
6

오늘, 나는 facebook.com의 HTML 코드로보고,이 같은 발견 : 그것은 <form>...</form> 내부에 두 번 반복 것Facebook 문자셋 탐지 메커니즘?

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

합니다.

이 코드가 유용 할 수도 있습니다. 어떤 종류의 서버 측 클라이언트 문자 세트 감지? 내가 아는 한 브라우저의 charset은 어쨌든 HTTP 요청으로 전송됩니다 ("Accept-Charset"헤더).

답변

4

이 코드에 유용 할 수 있습니다 어떤 생각 - 서버 측 클라이언트 문자 집합 감지 어떤 종류의?

분명히 그렇습니다. 다른에서 UTF-8

  • 88 창-1251
  • 80

    • E2 (82) AC : 그것을 인코딩 이렇게 많은 방법이 있기 때문에

      유로 기호 문자 집합 탐지에 유용 창-125x 인코딩에 ISO-8859-7, -15에서

    • A4, 및 GB18030
    • 85 40 -16
    • A2 E3 시프트-JIS
    • ,451,515,

    지금까지 내가 아는 한, 브라우저 캐릭터 세트가 어쨌든 HTTP 요청 ("동의-캐릭터 세트를"헤더)로 전송되고있다.

    는 그것은 HTTP Content-Type 헤더 전송에을 가정 ,하지만 그 해당 사용자 에이전트가 실제로 바로 그것을 얻을 것을 의미하지 않는다.

  • 3

    나는 수신 스크립트에서 클라이언트가 UTF-8로 인코딩 된 요청을 올바르게 전송했는지 확인하기 위해이 문자를 일치시키는 것으로 추측됩니다.

    정확하게 기억한다면 - 나는 한 번 그 문제를 해결해야만했습니다 - 어떤 상황에서는 IE6에서 형식 인코딩에 문제가있었습니다.

    +0

    감사합니다. IE6 관련 양식 문제에 대해 Google에 알려 드리겠습니다. – Void

    +0

    내가 틀릴 수도 있지만, 모호한 인코딩 (content-type 헤더가 'content-type' META 태그와 다른 것을 말하고있을 때)에 관한 것이 었습니다. 어쨌든, 페이스 북은 모든 종류의 고객이 액세스하고 있기 때문에 인코딩이 일반적으로 옳은지 확인해야한다고 생각합니다. –

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

    나는

    그래서 그들은 확인할 수 있습니다, 어떤 브라우저가 같은 &euro;´ 같은 &acute;을 보낼 생각 charset_test 같은 [0] == charset_test [2] charset_test [1] == charset_test [ 3]

    다른 문자들에 대해서는 단서가 없습니다. 아마도 CJK를 테스트 할 것입니다.

    0

    Pekka가 말한 것처럼 요청 charset을 감지 할 수 있습니다. HTTP 프로토콜은 요청의 charset을 지정하는 방법을 제공하지 않습니다. 이 때문에 프로토콜 외부의 규칙에 의존해야합니다. 일반적으로 브라우저는 예측 가능하지만이 트릭 만 100 % 확실한 방법입니다.

    은 참조 : http://www.phpwact.org/php/i18n/charsets