Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Печать русского текста

Страниц (2): [1] 2 »
 

1. CblPHU4 - 09 Августа, 2022 - 04:42:11 - перейти к сообщению
Доброго времени суток, есть маленький код, который из блокнота считывает строчку, сохраняет ее в буфер, после чего через ctrl+v вставляет куда я покажу, и так пока файл не кончится
Если в файле английский текст, проблем никаких нету, но если русский, то появляются кракозябры

При чем, если использовать команду sendlanguage("00000409", 0); для изменения раскладку на русскую, то идут одни символы
Здесьрусскийтекст

А если изменить раскладку на английский, то совсем другие символы
Здесьрусскийтекст

Как можно это исправить? Или подскажите как вместо использования буфера печатать русский текст из string

CODE:

//Чтение по целой строке
if (fopen ("spisok5.txt", "r")!=0)
{
string spisok;
tt:if (freadline(spisok)!=0)
{
sendlanguage("00000409", 0);
writeclipboard(spisok); // сохраняет в буфер строку

mousemove(1375,50);
mouse(LEFT);
keydown(CONTROL);
key('v');
keyup(CONTROL);
pause(500);

goto tt;
}
fclose();
}
2. Zireael - 09 Августа, 2022 - 04:49:13 - перейти к сообщению
Нужно прочитать весь файл и конвертировать текст из utf8 в ansi, используя функцию utf8toansi.
3. CblPHU4 - 09 Августа, 2022 - 05:14:41 - перейти к сообщению
 Zireael пишет:
Нужно прочитать весь файл и конвертировать текст из utf8 в ansi, используя функцию utf8toansi.

Тот же самый прикол
Написал текст в 1 строку на 2 языках, для наглядности
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]

CODE:

if (fopen ("spisok5.txt", "r")!=0)
{
string spisok;
string F=utf8toansi (spisok);
tt:if (freadline(F)!=0)
{
writeclipboard(F); // сохраняет в буфер строку
messagebox(F);

goto tt;
}
fclose();
}
4. Zireael - 09 Августа, 2022 - 06:24:14 - перейти к сообщению
Потому что неправильно написан код.
 Цитата:
string spisok;
string F=utf8toansi (spisok);

Переменная spisok это пустая строка, т. е. в функцию utf8toansi передали пустую строку. И какой в этом смысл?
Сначала надо прочитать файл, а уже потом конвертировать текст.
5. CblPHU4 - 09 Августа, 2022 - 06:45:18 - перейти к сообщению
 Zireael пишет:
Потому что неправильно написан код.
 Цитата:
string spisok;
string F=utf8toansi (spisok);

Переменная spisok это пустая строка, т. е. в функцию utf8toansi передали пустую строку. И какой в этом смысл?
Сначала надо прочитать файл, а уже потом конвертировать текст.


spisok не является пустым
Тут же наверху строка, которая считывает строчку из выбранного файла и передает его в параметр string

Ну да ладно, я нашел решение проблемы))))
Прикол оказался в том, что сам блокнот сохраняет по умолчанию в кодировке UTC-8
Если открыть файл, то буквы русские, но когда я навожусь на него в папке, для предпросмотра, то видны как раз таки символы (Использую QTTabBar)
Нужно всего лишь "сохранить как" и в самом низу выбрать кодировку ANSI

Спасибо за уделенное время
6. Zireael - 09 Августа, 2022 - 07:51:20 - перейти к сообщению
 Цитата:
spisok не является пустым
Тут же наверху строка, которая считывает строчку из выбранного файла и передает его в параметр string

Добавил комментарии, может так понятнее будет.
CODE:
string spisok; // объявить переменную, в данном случае пустая строка
string F=utf8toansi (spisok); // перевести из utf8 в ansi, в данном случае переводить нечего, т. к. spisok пустая строка
tt:if (freadline(F)!=0) //прочитать строку
// т. е. в переменной F оригинальная строка из файла
7. CblPHU4 - 09 Августа, 2022 - 08:58:39 - перейти к сообщению
 Zireael пишет:
 Цитата:
spisok не является пустым
Тут же наверху строка, которая считывает строчку из выбранного файла и передает его в параметр string

Добавил комментарии, может так понятнее будет.
CODE:
string spisok; // объявить переменную, в данном случае пустая строка
string F=utf8toansi (spisok); // перевести из utf8 в ansi, в данном случае переводить нечего, т. к. spisok пустая строка
tt:if (freadline(F)!=0) //прочитать строку
// т. е. в переменной F оригинальная строка из файла


Я понял о чем ты, но в самом верху есть строчка
if (fopen ("spisok5.txt", "r"Подмигивание!=0)

Вот тебе инфа, если не понятно(для просмотра ссылки Вам необходимо авторизоваться) spisok не является пустым, потому что в него сразу записывается инфа

Зачем спорить если я запускаю код и он работает как надо на английском, а именно каждую строчку выводит по очереди из файла, а строчки выводятся потому что получается что spisok не пустой, правильно?
У меня лишь была проблема с русским языком, и это не потому что spisok якобы пустой, с какого-то вдруг колена, а потому что блт блокнот не в той кодировке работал
Запусти код и проверь сам, зачем спорить ни о чем
8. Zireael - 09 Августа, 2022 - 09:56:50 - перейти к сообщению
 Цитата:
но в самом верху есть строчка
if (fopen ("spisok5.txt", "r" )!=0)

Которая обозначает открыть файл. И всё, тут никуда ничего не записывается. Ну да ладно, вам виднее.
 Цитата:
а потому что блт блокнот не в той кодировке работал

Начиная с win10, а может раньше, в блокноте кодировка utf8 без bom.
9. Martin - 10 Августа, 2022 - 05:24:42 - перейти к сообщению
Zireael ,
Помогите пожалуйста разобраться почему не работает
CODE:
string result;
string text = "^"текст в кавычках^"";
result = utf8toansi(text);
writeclipboard(result);
messagebox(result);
10. Zireael - 10 Августа, 2022 - 05:53:41 - перейти к сообщению
 Цитата:
почему не работает

Я не дома, проверить код не могу.
Функция utf8toansi в данном случае точно не нужна.
Если в буфер пишет кракозябры, то сначала нужно переключиться на русскую раскладку.

Powered by ExBB FM 1.0 Final