← All posts tagged кодировки

gogaxxx
Windows говно кодировки Продолжаю воевать с виндовыми кодировками. На этот раз какая-то лажа с sqlite3
Скачал бинари под винду. Создаю табличку: CREATE TABLE authors (author_id integer primary key, name varchar not null);

Вставляю туда запись: INSERT INTO authors (name) values ('Пупкин Василий');

Пока всё хорошо. Селект показывает по-русски, чики-пики. Далее, копирую базу под линукс, делаю там селект... в выводе кракозябры

sqlite> select * from authors;
1|ЏгЇЄЁ­ ‚ бЁ«Ё©

Так. Кракозяброй нас не напугаешь, всего то надо поменять кодировку, но на какую?! Издали это выглядит как UTF-8, но на деле это не он: "Пупкин Василий" в UTF-8 выглядит так: "РџСѓРїРєРёРЅ Василий"

Залез в базу фаром, там то же самое, что линуксовый клиент показывает. Ну и как это понять? Особенно учитывая, что винда всё показывает правильно.
gogaxxx
Windows powershell говно Что виндовс делает с кодировками? Новая серия. Имеется файл list.txt в кодировке ucs-2. У меня также стоит cygwin со всякими утилитами. Запускаю iconv -f ucs-2 -t utf-8 list.txt >list2.txt в PowerShell. Файл не изменился! Запускаю ту же комманду из-под cmd. Файл нормально превратился в utf-8. Что там повершелл мутит? Задолбали эти фокусы.
gogaxxx
HTML CSS Интересная штука: с одной стороны, кодировку html документа обязан указывать сервер в хедерах, а если не указал, то непонятно, как его отображать. Можно, конечно, прописать <meta> в тексте, но эта мета берёт начало от http-хедеров. Это при том, что кодировка документа — вообще-то его неотъемлимое свойство. Документ возможно корректно прочесть только в той кодировке, в какой он был написан (спасибо, Капитан!) В каждом элементе можно прописать язык lang="...", а вот кодировку указать только через мету. Ну спасибо и на том.
С другой стороны, если я хочу использовать с документом какой-то CSS стиль, я должен прописывать его в <link> или <style>. Никакого способа применить стиль, не прописанный в HTML файле, нет. Это при том, что документ вполне реально, а зачастую и удобнее, прочитать с отключёнными стилями. Или можно с помощью расширений браузера наложить другой стиль. Но это костыли. А в стандартном протоколе такое не предусмотрено, при всех этих словах о "разделении структуры и представления"
Вот, спрашивается, чем там эти комитеты занимаются, когда до сих пор есть такие вопиющие косяки?!
Ладно, выкидывать хедер с кодировкой из протокола неправильно — не только ведь html-документы могут раздаваться, но и plain text, например. Но вот способ прикручивать сторонние (и вообще любые) стили к документу надо иметь в стандартном протоколе.
gogaxxx
говно Задача старая, как мир: http-сервер сконфигурирован так, что выдаёт content-type=koi8-r, а автор сайта выкладывает страничку в cp1251. В итоге буквы преобразовываются из cp1251 в koi8-r, а вот всякие спецсимволы типа тире и кавычек-ёлочек остаются на месте, например, буква "Х" в cp1251 имеет код D5, и превращается в кои-8 в E8, а вот тире "—" как было в cp1251 97, так и остаётся 97, но в кои-8 на 97 стоит знак "примерно равно" "≈", или ёлочки "«" в cp1251 имеют код AB, и тоже остаются на месте, превращаясь в кои-8 в псевдографику "╚". Нет, я могу понять, как сервер это перекодирует (вопрос "нахрена?" остаётся без ответа), но вот как так получается, что браузер это показывает нормально, каким местом он догадывается про оригинальную кодировку и работает в двух кодировках одновременно?