IDN и HTTP_HOST

$ echo '100 100 100 99 99 26 25 24 24' | perl -e 'while (<>) { chomp; my %nums; foreach (split(/ /)) { $nums{$_} += 1; }; foreach (sort {$b <=> $a} keys %nums) { print "$_ $nums{$_} " }; print "\n"; }'
100 3 99 2 26 1 25 1 24 2
2
задан 15 May 2017 в 23:37
2 ответа

Не заключайте мне в кавычки на нем, но я не думаю так.

Я полагаю, что это - клиентское программное обеспечение, которое преобразовывает доменное имя из формата IDN, включенного пользователем в формат ASCII для запросов серверов DNS с, поэтому когда это отправляется через провод на сервер Apache, это было уже преобразовано в так называемый "punycode".

Я предполагаю, что Вы смогли помещать что-то во главе своих сценариев (или даже в предварительно ожидаемом заголовочном файле - посмотрите php.ini) это преобразовывает xn--hemmabst-5za.net в исходный формат (hemmabäst.net) то, что Ваши сценарии могут использовать (возможно, обратная запись его в $_SERVER['HTTP_HOST'] или в глобальную переменную.

Может даже быть что-то там уже способное к выполнению этого для Вас.

1
ответ дан 3 December 2019 в 11:15
  • 1
    Да, я понимаю это it' s все сделанные клиентский, но я надеялся, что это могла быть декодируемая серверная сторона также. Так хорошо, если я должен сделать это в PHP, поэтому теперь я должен найти хорошую функцию PHP, которая преобразовывает его назад... Спасибо! –  Sandman 11 February 2010 в 21:55

Так как позволенный набор символов на имя DNS является настолько узким, фактическое доменное имя является именем с дефисами в нем. Таким образом, то, что Вы видите в HTTP_HOST, является, на самом деле, корректным именем. Перевод в unicode - немного приукрашивающее, запросил дисплей только, когда имя добирается до браузера (и даже всеми браузерами). Любая работа, которую Вы хотите сделать с URL, должна быть сделана с исходным ASCII ("punycode") версия, не версия Unicode, или вещи не могут работать способ, которым Вы ожидали.

Тем не менее, если Вы хотите перевести punycode версию доменного имени в Unicode в целях дисплея в Вашей веб-странице (по-видимому, использующий PHP), затем используйте функции PHP IDN.

2
ответ дан 3 December 2019 в 11:15

Теги

Похожие вопросы