Автор Гілка: Вивід повідомлень українською (utf-8) у консолі (CLI) з програми на С та Python  (Прочитано 13424 раз)

Відсутній HetmanNet

  • Графоман
  • ****
  • дописів: 412
  • Карма: +0/-0
  • Fedora, CentOS, RHEL, KDE
Є потреба зробити можливим виведення повідомлень у консоль українською (бажано utf-8), та справа у тому що на setlocale(LC_ALL, "uk_UA.utf-8") нереагує. Загалом все пробую робити на помацки, бо знайти повноцінний опис як то зробити в Linux не виходить. Пробував зичити приклади у москалів, та ефект той самий. Тож не розумію чи то я не правильно роблю чи то Geany глючить..  :( Якщо хто може - поділіться перевіреною інструкцією, книгою чи ще чимось (а не першим що в Google вилізе) чи просто розкажіть як то зробити.
Про Python вирішив спитати також, бо почав його вчити і є передчуття цієї проблеми. Якщо написати у вигляді:
import locale
locale.setlocale(locale.LC_ALL, 'uk_UA.utf8')
first="\xd0\xa1\xd0\xbf\xd1\x80\xd0\xbe\xd0\xb1\xd0\xb0 \xd0\xbd\xd0\xb0\xd0\xbf\xd0\xb8\xd1\x81\xd0\xb0\xd1\x82\xd0\xb8 \xd1\x89\xd0\xbe\xd1\x81\xd1\x8c \xd1\x83\xd0\xba\xd1\x80\xd0\xb0\xd1\x97\xd0\xbd\xd1\x81\xd1\x8c\xd0\xba\xd0\xbe\xd1\x8e \xd0\xbc\xd0\xbe\xd0\xb2\xd0\xbe\xd1\x8e"
print(first)
то все добре, а якщо так:
import locale
locale.setlocale(locale.LC_ALL, 'uk_UA.utf8')
second="Спроба написати щось українською мовою"
print(second)
то все кепсько - помилка і відмова працювати. Та писати через трьох кілометрову послідовність незручно, тож запитаю як то виправити.
Віддамся на один вечір в хороші дівочі руки.. не дорого, в у.о. .. Якщо сподобається, то залишуся безкоштовно назавжди..

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3742
  • Карма: +9/-0
  • Програміст
LC_ALL не треба чіпати, а то деякі речі можуть не працювати (напр. вивід чи ввід дати у форматі Сі). LANG цілком достатньо.

Щодо пітона, то я не можу зрозуміти як воно зараз працює:

$
$ cat t.py
#!/usr/bin/python
# -*- coding: utf8 -*-

print "Вітаю, світе!\n"

$ python2 ./t.py
Вітаю, світе!

$ python3 ./t.py
  File "./t.py", line 4
    print "Вітаю, світе!\n"
                                    ^
SyntaxError: invalid syntax


:-/
[Fedora Linux]

Відсутній tarasian666

  • Графоман
  • ****
  • дописів: 464
  • Карма: +0/-0
  • нульовий біт це також біт
>>> print ("Вітаю, світе!\n")
Вітаю, світе!
Kernel alive - куди поділи цю "фразу" в новому ядрі?

Відсутній HetmanNet

  • Графоман
  • ****
  • дописів: 412
  • Карма: +0/-0
  • Fedora, CentOS, RHEL, KDE
Дякую, з Python вже розібрався. Виявляється з ним все добре. А ось з С/C++ поки не так все добре.
Віддамся на один вечір в хороші дівочі руки.. не дорого, в у.о. .. Якщо сподобається, то залишуся безкоштовно назавжди..

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3742
  • Карма: +9/-0
  • Програміст
Дякую, з Python вже розібрався. Виявляється з ним все добре. А ось з С/C++ поки не так все добре.

$ cat test.c
#include <langinfo.h>
#include <stdio.h>
#include <locale.h>

int main(int argc, char** argv) {
  // Set default locale
  setlocale(LC_ALL, "");

  printf("День тижня: %s\n", nl_langinfo(DAY_6));
}
$ gcc test.c && ./a.out
День тижня: п'ятниця
$ echo $LANG
uk_UA.utf8

Не воно?
[Fedora Linux]

Відсутній HetmanNet

  • Графоман
  • ****
  • дописів: 412
  • Карма: +0/-0
  • Fedora, CentOS, RHEL, KDE
Дякую, з Python вже розібрався. Виявляється з ним все добре. А ось з С/C++ поки не так все добре.

$ cat test.c
#include <langinfo.h>
#include <stdio.h>
#include <locale.h>

int main(int argc, char** argv) {
  // Set default locale
  setlocale(LC_ALL, "");

  printf("День тижня: %s\n", nl_langinfo(DAY_6));
}
$ gcc test.c && ./a.out
День тижня: п'ятниця
$ echo $LANG
uk_UA.utf8

Не воно?
Хм.. проблема в Geany.. бо коли з консолі запускаю - все добре, а коли в Geany для перевірки - він не показує кирилицю. Виявляється паніка була зайвою.. чого він так??
Віддамся на один вечір в хороші дівочі руки.. не дорого, в у.о. .. Якщо сподобається, то залишуся безкоштовно назавжди..

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3742
  • Карма: +9/-0
  • Програміст
Хм.. проблема в Geany.. бо коли з консолі запускаю - все добре, а коли в Geany для перевірки - він не показує кирилицю. Виявляється паніка була зайвою.. чого він так??

Не зміг відтворити проблему з Geany в себе (Федора 19-та), нічого не можу порадити. :-(
[Fedora Linux]

Відсутній HetmanNet

  • Графоман
  • ****
  • дописів: 412
  • Карма: +0/-0
  • Fedora, CentOS, RHEL, KDE
Хм.. проблема в Geany.. бо коли з консолі запускаю - все добре, а коли в Geany для перевірки - він не показує кирилицю. Виявляється паніка була зайвою.. чого він так??

Не зміг відтворити проблему з Geany в себе (Федора 19-та), нічого не можу порадити. :-(
У мене просто порожнє місце замість літер.  :(
Віддамся на один вечір в хороші дівочі руки.. не дорого, в у.о. .. Якщо сподобається, то залишуся безкоштовно назавжди..

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3742
  • Карма: +9/-0
  • Програміст
У мене просто порожнє місце замість літер.  :(

Напевно проблема з шрифтом а не з кодуванням. :-/
[Fedora Linux]

Відсутній HetmanNet

  • Графоман
  • ****
  • дописів: 412
  • Карма: +0/-0
  • Fedora, CentOS, RHEL, KDE
У мене просто порожнє місце замість літер.  :(

Напевно проблема з шрифтом а не з кодуванням. :-/
Шрифт змінюю у налаштуваннях, але в консолі все одно той самий :(
Віддамся на один вечір в хороші дівочі руки.. не дорого, в у.о. .. Якщо сподобається, то залишуся безкоштовно назавжди..

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Користуйтесь gettext і пишіть в коді повідомлення англійською - тоді не виникатиме ніяких проблем з IDE.
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.