• 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 выглядит так: "РџСѓРїРєРёРЅ Василий"

    Залез в базу фаром, там то же самое, что линуксовый клиент показывает. Ну и как это понять? Особенно учитывая, что винда всё показывает правильно.

Replies (5)

  • @gogaxxx, Вообще это напоминает utf-8, который преобразовали ещё раз во что-то. Типа как древняя бНОПНЯ. Это подтверждается тем, что если вводить строку с только латинскими символами они не коверкаются при выводе, а в файле хранятся как есть.
  • @gogaxxx, а в винде не UTF-16LE по дефорлту для юникода?
  • @lex2d, Если бы это был UTF-16, там бы и пробел раздвоился и латинские символы.
  • @gogaxxx, Запускал из консоли в которой менял chcp?
  • @vt, По поводу фара — он не использует "кодировку", а работает с юникодными API, тогда как sqlite3.exe — работает с консолью в режиме совместимости и чувствителен к той кодировке консоли, которую ты укажешь.