21 Востаннє редагувалося ReAl (27.12.2017 22:51:04)

Re: phantomjs виводить крякозябри замість української мови

FakiNyan написав:

Хай. Завантажую через phantomjs сторінку і парсю через jquery, виводячи деякі значення, з латинкою працює нормально, а от чудову українську не виводе, замість неї виводе ось таке

╨Я╨░╨▓╨╗╨╛ ╨Ч╤Ц╨▒╤А╨╛╨▓

Я пробував запускати з опцією

--output-encoding=utf8

та воно не допомогло.
Як то похвіксити?

Судячи з вигляду, консоль взагалі в CP866.

FakiNyan написав:

вирішив записати дані в файл, то все нормально відображається.

Отожбо.
Саме тому в одній консольній програмі, в її win-варіанті, у мене (то C++, а чи можна достукатися з того  phantomjs до рідно-віндової CharToOem, яка знає про те, в яку кодову сторінку встановлено консоль,  не знаю)

    if (stdout_tty)
        CharToOem(buf, buf);

А вже stdout_tty то булевське поле у класі, яке при запуску програми ініціалізується так

console_t::console_t()
    : stdout_tty(isatty(fileno(stdout)))
    , stderr_tty(isatty(fileno(stderr)))
    , log_level(info)

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

printf("Nested comments is %s\n", */*/**/"*/"/*"/**/ == '*' ? "OFF" : "ON");
Подякували: bunyk1

22

Re: phantomjs виводить крякозябри замість української мови

ніфіга не поняв, я встановлював різне кодування для консолі, вид крякозябрів змінювався, але української не видно було

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...

23 Востаннє редагувалося ReAl (28.12.2017 00:04:09)

Re: phantomjs виводить крякозябри замість української мови

Якщо оте все скоротити, то я порекомендував пошукати функцію, яка перекодовує у поточне кодування консолі, а не підбирати кодування консолі.

Після того, як я так зробив (через WinAPI), всі проблеми пропали, кирилиця почала показуватися нормально у всіх коистувачів.

printf("Nested comments is %s\n", */*/**/"*/"/*"/**/ == '*' ? "OFF" : "ON");

24

Re: phantomjs виводить крякозябри замість української мови

тепер пойняв, але мені ліньки якось поки що

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...

25

Re: phantomjs виводить крякозябри замість української мови

p.s. І ще одна WIN-консольна радість — те, що у командному рядку програми набирається в консолі і в ній виглядає нормально, потрапляє на обробку (argv в main) вже перекодованим з консольного кодування у встановлене в WIN кодування. Просто тому, що це може бути GUI-програма з можливістю взяти аргументи.
І якщо просто надрукувати свої аргументи, то буде сміття. А от якщо програма просить щось набрати, то воно передається у програму як є, без перекодування з консольного у «головне».

win-програма, яка друкує свої аргументи написав:

D:\temp>foo йцукен ЙЦУКЕН
'щЎєъхэ'
'╔╓╙╩┼═'
Now, enter string:
шщзхїШЩЗХЇ
'шщзхїШЩЗХЇ'

printf("Nested comments is %s\n", */*/**/"*/"/*"/**/ == '*' ? "OFF" : "ON");
Подякували: leofun011

26

Re: phantomjs виводить крякозябри замість української мови

тре було на початку коду ось це зробити

phantom.outputEncoding="cp1251";

і перевести консолю в це ж кодування

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...
Подякували: /KIT\, 0xDADA11C7, 221VOLT3

27

Re: phantomjs виводить крякозябри замість української мови

cp/win1251/latin1 -- "непотріб" !!
даєш тотальний великий і єдиний utf8 !!

Це ще не кінець. Це навіть не початок кінця. Але, можливо, це кінець початку.
Зростання мудрості можна точно вимірювати ступенем зменшення злоби.
Подякували: 0xDADA11C71

28

Re: phantomjs виводить крякозябри замість української мови

utf8 не робе

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...
Подякували: 0xDADA11C71

29

Re: phantomjs виводить крякозябри замість української мови

хтось щось таке робе, що utf8 не робе  :D

Це ще не кінець. Це навіть не початок кінця. Але, можливо, це кінець початку.
Зростання мудрості можна точно вимірювати ступенем зменшення злоби.

30

Re: phantomjs виводить крякозябри замість української мови

Трусік послуговується віндою, тому страждає.

Говорила баба діду: «Я поїду к Білодіду, Ізучу двомовну мову І вернусь обратно знову». А дід бабі: «Не *изди, К Білодіду нєт їзди, — Туди не ходять поїзди»
Подякували: 221VOLT1

31

Re: phantomjs виводить крякозябри замість української мови

на вінді то все важче робити, одже я кращий кодер (▀̿Ĺ̯▀̿ ̿)

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...

32

Re: phantomjs виводить крякозябри замість української мови

то якісь фантомні болі кракозябри самоствердження ))

Це ще не кінець. Це навіть не початок кінця. Але, можливо, це кінець початку.
Зростання мудрості можна точно вимірювати ступенем зменшення злоби.
Подякували: 0xDADA11C71