marjachok |
Отправлено: 19 Октября, 2018 - 14:15:51
|
Прохожий
Покинул форум
Сообщений всего: 15
Дата рег-ции: Окт. 2018
Репутация: 0
|
Необходимо изменить кодировку разпознанного текста а, то после того как я изменяю кодировку в 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();//закрываем файл
} |
|
|
Zireael |
Отправлено: 19 Октября, 2018 - 14:49:05
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: после того как я изменяю кодировку в 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"); // запустить батник
} |
|
|
marjachok |
Отправлено: 20 Октября, 2018 - 14:33:08
|
Прохожий
Покинул форум
Сообщений всего: 15
Дата рег-ции: Окт. 2018
Репутация: 0
|
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"); // запустить батник
} |
|
|
Zireael |
Отправлено: 20 Октября, 2018 - 19:26:06
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Что я сделал неправильно?
Не использовать кириллицу в пути.
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"); // запустить батник
} |
|
|
marjachok |
Отправлено: 20 Октября, 2018 - 23:17:04
|
Прохожий
Покинул форум
Сообщений всего: 15
Дата рег-ции: Окт. 2018
Репутация: 0
|
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"); // запустить батник
}
|
|
|
Zireael |
Отправлено: 22 Октября, 2018 - 01:44:01
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
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); // скопировать файл |
|
|
|