Решили с товарищем собрать систему, которая будет фотографировать деталь, анализировать и выводить сообщение — есть там в отверстии резьба или нет.

Товарищ далеко от меня живет, работу разделили — мне аппаратная часть, ему программная.

Нашел я красивую коробочку, закрепил там подставку для детали, USB-фотокамеру, подключил к компьютеру.

Стал обдумывать, по какому событию фотокамера будет делать снимок. Решил, что это будет нажатие на букву «ё» на клавиатуре.

Связался с товарищем, обсудили. Он написал на Go программу, прислал. Запускаю программу, жму на «ё»… Не фотографирует!

Может, клавиша неисправна?

Делаю копию программы, заменяю в ней «ё» на «ы». Нажимаю — так фотографирует.

Для проверки заменяю обратно «ы» на «ё». Нажимаю — ура, заработало!

Где же проблема была? Проверяю снова с исходником — не работает...

Начинаю догадываться, что «ё» в исходнике, и «ё» которое я записал в копии отличаются.

Связываюсь с товарищем, обсуждаем - нашли проблему. Он живет во Франции, у них этот символ имеет другую кодировку, хотя по начертанию точно такой же.

Так что хочу всех предупредить - с «ё» будьте поосторожней!

История не шутка, произошла на самом деле. У кого-нибудь были подобные проблемы с кодировками?

Комментарии (10)


  1. dom1n1k
    27.05.2026 21:50

    Есть кириллическая ё (йо), а есть латинская e-diaeresis (она же umlaut).
    Хуже того, помимо цельной буквы, ещё есть комбинируемые диакритические знаки, которые умеют прилепляться к букве обычной (на маках распространено).
    И та же история с буквами i и ï, а может и ещё с какими-то.
    Всё сложно.


    1. vladkorotnev
      27.05.2026 21:50

      Да и с "й" тоже. Помнится при какой-то конвертации музыки мне в тегах что-то заменило обычную Й на комбинацию из И, ZWJ и диакритика — и потом из-за бага в рокбоксе и фубаре палка от оной съезжала на буквы так четыре вперёд.


      1. Squoworode
        27.05.2026 21:50

        Об отвале башки декомпозиции и краткого на Хабре и статья была: https://habr.com/ru/articles/262679/

        P.S. А иногда бывает даже "и дважды краткое": й̆


        1. Solmik Автор
          27.05.2026 21:50

          Спасибо за ссылку, интересная статья!


  1. hafewix
    27.05.2026 21:50

    $: echo 'ёжик' | grep -Po '[а-я]+'
    жик
    $: echo 'ёжик' | grep -Eo '[а-я]+'
    ёжик


    1. Solmik Автор
      27.05.2026 21:50

      Благодарю!

      Вы могли бы подробнее описать, как влияют параметры -Po и -Eo ?

      И от чего ещё может зависеть результат?


      Попробовал на своем Альт-Линуксе в терминале, оба варианта дали

      жик

      жик


  1. Busla
    27.05.2026 21:50

    хочу всех предупредить - с «ё» будьте поосторожней!

    по рассказу выходит так, что с «а» и многими другими буквами у вас произошла бы ровно такая же проблема:

    Он живет во Франции, у них этот символ имеет другую кодировку, хотя по начертанию точно такой же.


    1. Solmik Автор
      27.05.2026 21:50

      >по рассказу выходит так, что с «а» и многими другими буквами у вас произошла бы ровно такая же проблема

      Если ставить латинскую "a", то конечно - проблема очевидная.

      У меня другой товарищ написал для DOS русификатор, назвал его VRUN, этот русификатор сознательно врал и частично использовал латинские буквы :)


  1. slair
    27.05.2026 21:50

    чтобы не страдать ерундой в следующий раз, запускайте xev
    и смотрите что возвращает клавиатура

    KeyPress event, serial 48, synthetic NO, window 0xa800001, root 0x2a4, subw 0x0, time 65442733, (1007,186), root:(1008,204), state 0x2010, keycode 49 (keysym 0x6a3, Cyrillic_io), same_screen YES, XLookupString gives 2 bytes: (d1 91) “ё” XmbLookupString gives 2 bytes: (d1 91) “ё” XFilterEvent returns: False

    KeyRelease event, serial 48, synthetic NO, window 0xa800001, root 0x2a4, subw 0x0, time 65442894, (1007,186), root:(1008,204), state 0x2010, keycode 49 (keysym 0x6a3, Cyrillic_io), same_screen YES, XLookupString gives 2 bytes: (d1 91) “ё” XFilterEvent returns: False


    1. Solmik Автор
      27.05.2026 21:50

      Я в тот раз так вычислил:

      скопировал символ из текста программы в Excel, A1

      = КОДСИМВ(A1) выдал код

      потом в соседней ячейке кнопкой ввел, и так же проверил

      Коды оказались разные