2010-05-31 4 views
3

Почему $ _SERVER ['HTTP_REFERER'] (PHP) и Request.ServerVariables («HTTP_REFERER») (ASP) возвращают другой результат, если строка запроса не имеет английские персонажи?

PHP возвращение правильное значение, но жерех не будет:

PHP: сабака

жерех: ׁ| ° | & plusmn; | ° | ÷ | °

+1

Интересный вопрос! Является ли ASP.NET прямой цитатой? Как вы его выводите? –

+0

Если вы используете веб-браузер для вывода, ознакомьтесь с кодировкой/кодировкой в ​​свойствах страницы. – VolkerK

+0

@Pekka, with response.write в asp и echo в php – Sasha

ответ

1

Согласно RFC 2616, символы не в ISO- 8859-1 должен быть специально закодирован. Поэтому кажется, что тот, кто посылает вам заголовки, нарушает спецификацию. См. полевое содержание и ТЕКСТ.

4.2 Message Headers

message-header = field-name ":" [ field-value ] 
field-name  = token 
field-value = *(field-content | LWS) 
field-content = <the OCTETs making up the field-value 
       and consisting of either *TEXT or combinations 
       of token, separators, and quoted-string> 

2.2 Basic Rules

TEXT   = <any OCTET except CTLs, 
       but including LWS> 

Правило TEXT используется только для описательного содержимого поля и значений, которые не предназначены для интерпретации синтаксического анализатора сообщений , Слова * ТЕКСТ МОЖЕТ содержать символы из наборов символов, отличных от ISO-8859-1 [22], только при кодировании в соответствии с правилами RFC 2047 [14].

Смежные вопросы