LINUX.ORG.RU
ФорумTalks

Неужели браузеры такое говно?

 ,


0

1

Меня это уже изрядно ДОСТАЛО.

Окей, я, конечно, понимаю, что интеграция с «сервисами» это ооочень и ооочень нужно и круто, почти так же как штампование новых версий каждый месяц (ага, и такие же частые обновления), но блин... это же просто тупейший бред. (речь о firefox если чё, вебкит подобными вообще невозможно пользоваться)

Недавно залил себе txt файлик на веб сервер. С русскими буквами и UTF-8. Дал прямую ссылку другу, заодно сам решил проверить. Файл открывается, но я вижу кракозябры.

Что, простите? ЧТО, ПРОСТИТЕ, ЭТО ТАКОЕ?!

Я-то переключил на юникод, а друг не нашел. В итоге самым (!) простым способом прочитать всё это стало тупое добавление html тегов с meta charset в utf-8. Форматирование уехало. Окей. Юзаю тег <pre>. Строки улетели вправо. Чел, кому предназначался текст, сказал чтобы я больше не ругался, затем он скопировал текст из <pre> себе в блокнот. На этом история закончилась. 2015 год на дворе, автоопределение кодировки для лохов, я так понимаю, cp-1251 наше всё.

Теперь сегодня. Один сайтик закрылся. Причем навсегда. Решил юзнуть web.archive.com. А они обновили интерефейс! Который редиректит на его «презентацию» при нажатии на 50% ссылок самих архивов, даже если я у них выбрал «классический сайт». Пришлось гуглить «контроль редиректов». Перебрал несколько плагинов, потратил время на их настройку. 0 толку. Плюнул, юзнул

$ links2 http://needed.url

вуаля, то, что мне нужно.

Выдохнул. Теперь, скажи мне ЛОР:

1) Это нормально?
2) Я старпёр?
3) Я требую от современного софта/мира/etc. чего-то невменяемого?


Я вот в процессе изучения яп... Возникает желание таки серьезно взяться за вопрос этих ваших браузеров, которые просто ДРЯНЬ по всем параметрам. Параметры, если интересуетесь, могу сообщить. Благо, их немало.

★★★★★

Настрой вебсервер чтоб в заголовках писал что ютф8.

PolarFox ★★★★★ ()
Ответ на: комментарий от PolarFox

Ну свой-то веб сервер я настрою, а с другими что делать?

Перешел по file://path/to/file - аналогичная ситуация

reprimand ★★★★★ ()
Последнее исправление: reprimand (всего исправлений: 1)
Ответ на: комментарий от reprimand

Либо хидер, либо явное указание кодировки в хтмле.

PolarFox ★★★★★ ()
Ответ на: комментарий от PolarFox

это понятно

а если txt файл? в примере с file:// так и было

reprimand ★★★★★ ()

автоопределение кодировки

В 2015 сервер сообщает кодировку. Это нормально.

Deleted ()

Что тут можно сказать, учи ЯП, пили свой.

Unununij ★★★★ ()
Ответ на: комментарий от Deleted

В 2015 сервер сообщает кодировку. Это нормально.

а если кодировка не предопределена? что тогда?

reprimand ★★★★★ ()
Ответ на: комментарий от reprimand

Тогда берется дефолтная, и она зависит от локали, насколько я знаю.

deep-purple ★★★★★ ()
Ответ на: комментарий от rogerw

Не влияет. Если сервер не сказал кодировку, то клиенту плевать, будет юзать дефолтную.

deep-purple ★★★★★ ()
Ответ на: комментарий от Deleted

Не всегда. И в браузерах при отсутствии указания кодировки (если у тебя выставлена русская локаль) по умолчанию идёт как раз cp-1251. Это сделано давно по вине сами знаете какой компании и ленивых русских сайтостроителей.

Deleted ()

Ставь десяточку.

Deleted ()
Ответ на: комментарий от reprimand

Тогда ССЗБ. Есть ещё такая штука как секьюрити иссьюз UTF-8, поэтому… :)

Deleted ()
Ответ на: комментарий от reprimand

В 2015 сервер сообщает кодировку. Это нормально.

а если кодировка не предопределена?

В 2015-м всё переводи в UTF-8. И отдавай с соответствующим заголовком сервера. Это нормально.

...

(Вот уж сколько .txt отдавал, никогда проблем с кодировкой не было)

KRoN73 ★★★★★ ()

2015 год

автоопределение кодировки для лохов

Внезапно, уже давно как. До всех давно дошло, что автоопределить кодировку в общем случае невозможно, что плейнтекста не существует от слова вообще и что кодировку текста всегда надо прикладывать к тексту явно, в данном случае это — обязанность (не право) веб-сервера.

x3al ★★★★★ ()
Ответ на: комментарий от rogerw

что насчет BOM?

Кто сказал, что файл юникодный? Сервер? В случае ТС он промолчал, что браузер вполне корректно интерпретировал.

А, да. BOM в UTF-8 — ересь. Надеюсь, не надо объяснять, почему.

x3al ★★★★★ ()
Последнее исправление: x3al (всего исправлений: 1)
Ответ на: комментарий от Harald

Почему?

UTF-8 использует побайтовое кодирование, ей пофиг, в каком порядке укладываются в память машинные слова. Это для UTF-16 имеет смысл.

static_lab ★★★★★ ()
Ответ на: комментарий от static_lab

оно ж как бы является в данном случае маркером, что «вот эта вот последовательность байтов есть текст в UTF-8»

Harald ★★★★★ ()
Ответ на: комментарий от Harald

Этот маркер работает только если предположить, что текст в юникоде. А в этом случае всё очевидно и без маркера.

x3al ★★★★★ ()

Если декодер от Лебедева определит верно кодировку, значит браузеры действительно такое г.

Да и вообще, лучше Opera <=12 не создали нормального браузера. Один сплошной вебкитошлак. Ни нормального дебаггера, ни нормальной верстки на сайтах, ибо -moz-/-webkit- теги расползлись по сети так, что никто по стандарту без всяких этих у***щных «хаков» ни один сайт не напишет. Это даже хуже, чем во времена IE6, тогда был один браузер, а сейчас уже 2 и каждый из них считает, что он замена ослика.

gh0stwizard ★★★★★ ()
Ответ на: комментарий от Harald

1) открой vim или практически любой другой текстовый редактор, который не пихает в файл того, что ты туда не писал

2) введи русский текст при локали ru_RU.UTF8

3) сохрани

4) ищи BOM хоть до старости

cvs-255 ★★★★★ ()
Последнее исправление: cvs-255 (всего исправлений: 1)

Недавно залил себе txt файлик на веб сервер. С русскими буквами и UTF-8. Дал прямую ссылку другу, заодно сам решил проверить. Файл открывается, но я вижу кракозябры.

И при чем тут браузер, если твой сервер, скорее всего, не говорит, что

Content-Type: text/html; charset=utf-8

А, да, в браузерах есть автоопределение. По крайней мере, когадя в это меню последний раз заглядывал, была.

http://wstaw.org/m/2015/06/14/enc_autodetect_chromium.png

invy ★★★★★ ()
Последнее исправление: invy (всего исправлений: 2)

2) Я старпёр?

Это в двадцать с лишним лет? Дите еще.

andreyu ★★★★★ ()
Ответ на: комментарий от Harald

Почему?

Потому, что BOM - это byte order mark. А на кой хер он нужен в utf-8?

andreyu ★★★★★ ()
Ответ на: комментарий от gh0stwizard

Если декодер от Лебедева определит верно кодировку, значит браузеры действительно такое г.

Он как бы создан в предположении, что целевой текст на русском, а значит набор кодировок заранее ограничен. Отсюда и возможность подбора последовательности перекодирований.

static_lab ★★★★★ ()

В Хроме переключается элементарно, Инструменты - Кодировка.

Den_Zurin ()

А вообще это сервер должен передавать кодировку. Типа так:

<?php
header("Content-Type: text/plain; charset=utf-8");
echo "Простой текст.";
?>

Den_Zurin ()

1) Это нормально?

Да.

2) Я старпёр?

Тебе виднее. Возможно, это маразм.

3) Я требую от современного софта/мира/etc. чего-то невменяемого?

Да.

Для кодировки надо было просто нормально настроить apache, nginx, или что там у тебя вместо сервера. Да и вообще надо было другу взять да сразу написать «wget url/filename.txt», зачем открывать в браузере и копировать в текстовый редактор, потом сохранять? Пляски вокруг костра какие-то. А так он бы сразу скачался в том виде, в каком есть.

Вторая проблема — вообще косяки реализации конкретного сайта, а не косяки браузера.

Psych218 ★★★★★ ()
Ответ на: комментарий от static_lab

Он как бы создан в предположении, что целевой текст на русском, а значит набор кодировок заранее ограничен.

Безгранична только лень разработчиков. Масса способов узнать какой язык предпочтителен пользователю. Конец сообщения.

gh0stwizard ★★★★★ ()
Ответ на: комментарий от x3al

Внезапно, уже давно как. До всех давно дошло, что автоопределить кодировку в общем случае невозможно

самый простой алгоритм - сравнивать с системной locale. И если кодировка отличается - не тыкать пальцем в небо. В 90% получится то, что требуется.

плейнтекста не существует от слова вообще и что кодировку текста всегда надо прикладывать к тексту явно

ага, это я уже понял, что в этом вашем вебе плейнтекст - непозволительная роскошь. Но когда я просто сохраню файл на флешку и отнесу другу, текстовые редакторы обычно МОГУТ себе позволить детект кодировки.

Pluma (gedit):
http://i.imgur.com/XivhVC7.png

reprimand ★★★★★ ()
Ответ на: комментарий от invy

А, да, в браузерах есть автоопределение.

не всегда корректно работает. Посмотрел алгоритм в хромиуме - примитивнейший до ужаса

reprimand ★★★★★ ()
Ответ на: комментарий от Psych218

надо было другу взять да сразу написать «wget url/filename.txt»

он вендоузятник. От одного подобного предложения он посчитает, что я неадекват.

косяки реализации конкретного сайта

у меня на сайте всё отлично. Но ты забыл, что

file.txt

reprimand ★★★★★ ()
Ответ на: комментарий от reprimand

сравнивать с системной locale

wat, как моя koi8r тут участвует вообще?

детект кодировки

ну вот кстати только кеды умеют угадывать кодировку почти во всех случаях, в чём секрет? наверняка эта операция весьма ресурсоёмкая.

wakuwaku ★★★★ ()

1) Это нормально?

Нет, но да.

2) Я старпёр?

Да, но нет.

3) Я требую от современного софта/мира/etc. чего-то невменяемого?

Чего-то вменяемого вместо веба? Да.

t184256 ★★★★★ ()
Ответ на: комментарий от wakuwaku

наверняка эта операция весьма ресурсоёмкая

[продумал в голове алгоритм]
не думаю, что она НАСТОЛЬКО ресурсоёмкая

reprimand ★★★★★ ()

кстати, что интересно, никто не сказал что он думает о самопроизвольных редиректах

ибо они меня намного больше беспокоят чем какие-то кракозябры

reprimand ★★★★★ ()
Ответ на: комментарий от reprimand

ну во всяком случае, когда я добавил детектирование кодировки в свой парсер, 99% времени (привет, icu) стало уходить на угадывание (низкокачественное), 1% собственно на лексический анализ.

wakuwaku ★★★★ ()
Последнее исправление: wakuwaku (всего исправлений: 1)
Ответ на: комментарий от reprimand

И если кодировка отличается - не тыкать пальцем в небо.

Ты предлагаешь тыкать пальцем в небо, не я. Я ж не предлагаю определять кодировку эвристикой.

Due to the unreliability of heuristic detection, it is better to properly label datasets with the correct encoding. HTML documents served across the web by HTTP should have their encoding stated out-of-band using the Content-Type: header.

Нельзя поощрять говноадминов, не осиливших настроить отдачу кодировки на сервере.

x3al ★★★★★ ()
Ответ на: комментарий от reprimand

Если веб-мастер хочет сделать редирект — у него обычно есть причина делать это. Думаешь, что умнее его — докажи.

x3al ★★★★★ ()

Браузеры катятся в то самое... Накатил свежую версию FF - перестали открываться морды всяческих железок, биллингов и прочих необходимых по работе вещей. Думал спасусь старым добрым Seamonkey - вот он дал мне спастись (ладонь поперёк локтя, выставленный вперёд кулак), видимо этот же уродский движок перенесли и в креветку. Ну и куда лису с креветкой теперь? На дваче сидеть тока? Приходится работать в богомерзком хроме.

yu-boot ★★ ()
Ответ на: комментарий от x3al

Если веб-мастер хочет сделать редирект — у него обычно есть причина делать это

да, есть причина
например та, что вебмастер - мудак

Думаешь, что умнее его — докажи

думаешь что я тупее его? докажи

reprimand ★★★★★ ()
Ответ на: комментарий от reprimand

а если txt файл? в примере с file:// так и было

Значит поставь дистр нормальный.

upd: Fedora 22 этим грешит. Так что да, ты прав и девелоперы дибилы

Siado ★★★★★ ()
Последнее исправление: Siado (всего исправлений: 2)
Ответ на: комментарий от deep-purple

Тогда берется дефолтная, и она зависит от локали, насколько я знаю.

Хреново знаешь. Если накидать какой-нибудь простенький хтмл-файл с текстом на русском и открыть его лисой, то при отсутствии явного указания UTF-8 в meta charset с далеко ненулевой вероятностью ты увидишь кракозябры. Потому что оно непонятно с какого хрена попытается прочитать его как cp1251. Локаль в системе, естественно, юникод.

Valkeru ★★★★ ()

Внезапно стандарт на HTML, п. 12.2.2.2 определяет последовательность действий для определения кодировки:

  1. юзер явно указал требуемую кодировку для страницы или фрейма;
  2. браузер получает порцию данных для определения кодировки;
  3. проверяются BOM-маркеры;
  4. проверяется HTTP-заголовок Content-Type;
  5. проверяется наличие meta-тегов, указывающих кодировку;
  6. проверяется кодировка родительского документа;
  7. проверяется кеш для данного документа;
  8. браузеру предлагается автодетектировать кодировку, однако для документов из сети это не рекомендуется;
  9. кодировка документа для контролируемых окружений предлагается UTF-8, в общих случаях — по текущей локали; для башкирской, белорусской, болгарской, казахской, киргизской, македонской, русской, таджикской, татарской, украинской, якутской локалей это Windows-1251.
static_lab ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.