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

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

1. marjachok - 19 Октября, 2018 - 06:15:51 - перейти к сообщению
Необходимо изменить кодировку разпознанного текста а, то после того как я изменяю кодировку в txt и после очередного заполнения текстового документа распознанным текстом изменяется кодировка txt файле и значение берётся не корректно.

 Цитата:
string text_KIB;
int sum_symbol_KIB;
int n_readtext_KIB;
int color_text_KIB_5[1];
color_text_KIB_5[0]=0;
double correct_symbol_KIB[45];
loadsymbolbase("C:\Users\Windows_7\Downloads\basetext.sib"Подмигивание;
win w_KIB;
int ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB;

start_();

sum_symbol_KIB=readtext(RU | MARK, #text_KIB, 8, 1, -1, 50, -1, #color_text_KIB_5[0], -1, 0, 50, 1064, 208, 1290, 223, w_KIB);
for (n_readtext_KIB=0; n_readtext_KIB<sum_symbol_KIB; n_readtext_KIB++)correct_symbol_KIB[n_readtext_KIB]=symbolcorrect(n_readtext_KIB);




function start_()
{
pause(1000);
int x, y;
getmouse(x, y);
w_KIB=getwindow(0, x, y);
ex_KIB=w_KIB.widthclient; ey_KIB=w_KIB.heightclient;
}


if (fopen ("D:\програмирование-2\1zenoposter\RubSerf\Capcha_Rubserf\тест.txt", "w"Подмигивание!=0)
{
fwrite(text_KIB);
fclose();//закрываем файл
}
2. Zireael - 19 Октября, 2018 - 06:49:05 - перейти к сообщению
 Цитата:
после того как я изменяю кодировку в txt

Файл, в который сохраняется распознанный текст, оставлять без изменений. Через командную строку создать копию файла в нужной кодировке.
CODE:
string path_in="C:\1111.txt"; // путь к файлу в кодировке ANSI
string path_out="C:\2222.txt"; // куда сохранить в кодировке Unicode

// сохранить батник, разовая операция, потом можно оставить только start
if(fopen("C:\ANSIinUnicode.bat", "w")!=0)
{
fwrite("chcp 1251"); fwrite(ENDL);
fwrite("cmd /u/c type "+path_in+" >C:\temp.txt"); fwrite(ENDL);
fwrite("chcp 65001"); fwrite(ENDL);
fwrite("type C:\temp.txt >"+path_out);
fclose();
sleep(1000);
start("C:\ANSIinUnicode.bat"); // запустить батник
}
3. marjachok - 20 Октября, 2018 - 06:33:08 - перейти к сообщению
Zireael ,
После завершения работы скрипта текстовый файл куда сохраняем данные в кодировке Unicode остаётся пустой. Что я сделал неправильно?

CODE:
string text_KIB;
int sum_symbol_KIB;
int n_readtext_KIB;
int color_text_KIB_5[1];
color_text_KIB_5[0]=0;
double correct_symbol_KIB[45];
loadsymbolbase("C:\Users\Windows_7\Downloads\basetext.sib");

sum_symbol_KIB=readtext(RU | MARK, #text_KIB, 8, 1, -1, 50, -1, #color_text_KIB_5[0], -1, 0, 50, 1065, 208, 1313, 222, -1);
for (n_readtext_KIB=0; n_readtext_KIB<sum_symbol_KIB; n_readtext_KIB++)correct_symbol_KIB[n_readtext_KIB]=symbolcorrect(n_readtext_KIB);


if (fopen ("D:\програмирование-2\1zenoposter\RubSerf\Capcha_Rubserf\тест.txt", "w")!=0)
{
fwrite(text_KIB);
fclose();//закрываем файл
}

string path_in="D:\програмирование-2\1zenoposter\RubSerf\Capcha_Rubserf\тест.txt"; // путь к файлу в кодировке ANSI
string path_out="D:\програмирование-2\1zenoposter\RubSerf\Capcha_Rubserf\test_2.txt"; // куда сохранить в кодировке Unicode


start("C:\ANSIinUnicode.bat"); // запустить батник
}
4. Zireael - 20 Октября, 2018 - 11:26:06 - перейти к сообщению
 Цитата:
Что я сделал неправильно?

Не использовать кириллицу в пути.
CODE:
string text_KIB="english text, русский текст"; // текст

string path_in="D:\ansi.txt"; // путь к файлу в кодировке ANSI
string path_out="D:\unicode.txt"; // куда сохранить в кодировке Unicode

if (fopen (path_in, "w")!=0)
{
fwrite(text_KIB);
fclose(); sleep(200);
}

// сохранить батник, разовая операция, потом можно оставить только start
if(fopen("D:\ANSIinUnicode.bat", "w")!=0)
{
fwrite("chcp 1251 >nul"); fwrite(ENDL);
fwrite("cmd /u/c type "+path_in+" >"+path_out); fwrite(ENDL);
fclose();
sleep(1000);
start("D:\ANSIinUnicode.bat"); // запустить батник
}
5. marjachok - 20 Октября, 2018 - 15:17:04 - перейти к сообщению
Zireael ,
А сейчас скрипт выдаёт ошибку "Повторение имени переменной text_KIB"

CODE:
string text_KIB
int color_text_KIB_5[1];
color_text_KIB_5[0]=0;
loadsymbolbase("C:\Users\Windows_7\Downloads\basetext.sib");
win w_KIB;
int ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB;

start_();

readtext(RU | MARK, #text_KIB, 8, 1, -1, 50, -1, #color_text_KIB_5[0], -1, 0, 50, 1059, 208, 1316, 223, w_KIB);




function start_()
{
pause(1000);
int x, y;
getmouse(x, y);
w_KIB=getwindow(0, x, y);
ex_KIB=w_KIB.widthclient; ey_KIB=w_KIB.heightclient;
}


if (fopen ("D:\програмирование-2\1zenoposter\RubSerf\Capcha_Rubserf\тест.txt", "w")!=0)
{
fwrite(text_KIB);
fclose();//закрываем файл
}


string text_KIB="english text, русский текст"; // текст

string path_in="D:\програмирование-2\1zenoposter\RubSerf\Capcha_Rubserf\тест.txt"; // путь к файлу в кодировке ANSI
string path_out="D:\програмирование-2\1zenoposter\RubSerf\Capcha_Rubserf\test_2.txt"; // куда сохранить в кодировке Unicode

if (fopen (path_in, "w")!=0)
{
fwrite(text_KIB);
fclose(); sleep(200);
}

// сохранить батник, разовая операция, потом можно оставить только start
if(fopen("D:\ANSIinUnicode.bat", "w")!=0)
{
fwrite("chcp 1251 >nul"); fwrite(ENDL);
fwrite("cmd /u/c type "+path_in+" >"+path_out); fwrite(ENDL);
fclose();
sleep(1000);
start("D:\ANSIinUnicode.bat"); // запустить батник
}


6. Zireael - 20 Октября, 2018 - 15:32:48 - перейти к сообщению
 Цитата:
string text_KIB="english text, русский текст"; // текст

Эту строку удалить. Она только для примера.
Не использовать кириллицу в пути.
7. marjachok - 21 Октября, 2018 - 17:04:08 - перейти к сообщению
Zireael ,
Привет. Я так понял, что без замены символов на латинские мне не обойтись. Подскажи как это можно сделать
8. Zireael - 21 Октября, 2018 - 17:44:01 - перейти к сообщению
CODE:
external(INT, "CopyFile", "CopyFileA", "kernel32.dll");

string text_KIB="english text, русский текст"; // текст

string path_in="D:\ansi.txt"; // путь к файлу в кодировке ANSI
string path_out="D:\unicode.txt";
string path_out2="D:\програмирование-2\1zenoposter\RubSerf\Capcha_Rubserf\test_2.txt"; // куда сохранить в кодировке Unicode


if (fopen (path_in, "w")!=0)
{
fwrite(text_KIB);
fclose(); sleep(200);
}

// сохранить батник, разовая операция, потом можно оставить только start
if(fopen("D:\ANSIinUnicode.bat", "w")!=0)
{
fwrite("chcp 1251 >nul"); fwrite(ENDL);
fwrite("cmd /u/c type "+path_in+" >"+path_out); fwrite(ENDL);
fclose();
sleep(1000);
start("D:\ANSIinUnicode.bat"); // запустить батник
}

sleep(2000);
CopyFile(path_out, path_out2, 0); // скопировать файл
9. Kibor - 15 Августа, 2023 - 12:58:28 - перейти к сообщению
Конвертирование формата ANSI в UTF-8
Конвертация UTF-8 в ANSI

CODE:
string A=ansitoutf8("Текст в ANSI");
messagebox (A);
string S=utf8toansi (A);
messagebox (S);

Powered by ExBB FM 1.0 Final