Юникод символы в заменяющем тексте

Обсуждение программы nhrt - замена текста в файлах (прежнее название nhrplc)
janci
Сообщения: 7
Зарегистрирован: 16 мар 2015, 16:51
Контактная информация:

Юникод символы в заменяющем тексте

Сообщение janci »

Здравствуйте. Помогите, пожалуйста. Возможно ли и как использовать юникод символы в параметре -t?
В -sre можно как в регулярном выражении использовать \uHHHH, но это поиск. А у меня заменяющий текст содержит unicode. В командной строке 866 кодировка, как я там такое введу.
Уже пробовал через экраны и так \uHHHH и \xHH и в кавычках и без - оно их интерпретирует буквально и в результате получаю \u0101 вместо ā и т.п.
P.S. Кстати не приходят письма активации на почту bigmir.net при регистрации.
nhutils
Сообщения: 595
Зарегистрирован: 09 дек 2009, 18:08
Контактная информация:

Re: Юникод символы в заменяющем тексте

Сообщение nhutils »

Здравствуйте!
Такой возможности для -t нет.
А вариант -f не подходит? http://nhutils.ru/blog/nhreplace/help/ там можно Unicode файл использовать
janci
Сообщения: 7
Зарегистрирован: 16 мар 2015, 16:51
Контактная информация:

Re: Юникод символы в заменяющем тексте

Сообщение janci »

Жаль. К сожалению -f неудобно, поскольку у меня есть довольно большой список замен в виде "искомый_текст"-"заменяющий_текст". С использованием -f мне придётся создавать десятки таких файлов, содержащих по несколько символов.
Интересно отметить, что если в командной строке вставлю символ юникода в параметре -t через контекстное меню, то в сам он отображается криво ибо кодировка процессора 866, но программа его отлично считывает как юникодовый и правильно заменяет. Но опять же на практике надо всё руками тогда вводить, а у меня bat-ник чтобы в цикле список замен реализовать, но как в bat-нике сохранить юникодовый символ?.
В любом случае благодарю за ответ и программу. Она всё равно - мощный инструмент!
Но просьбу оставлю, если будет возможность, либо добавить интерпретацию экранируемых символов в заменяющем тексте, либо (вообще замечательно было бы) использование файла со списком "искомый текст"-"заменяющий" с указанием разделителя (на подобие csv) ну и конечно же с поддержкой юникода/экранирования. Ибо пытался такой список создать и в батнике цикл сделать, но батник юникод не может воспринять, а программа экранируемые символы не интерпретирует и тупик..
nhutils
Сообщения: 595
Зарегистрирован: 09 дек 2009, 18:08
Контактная информация:

Re: Юникод символы в заменяющем тексте

Сообщение nhutils »

janci писал(а):добавить интерпретацию экранируемых символов в заменяющем тексте
Идея хорошая, в будущей версии добавим, чтобы можно было задавать как \03A9.
janci писал(а):использование файла со списком "искомый текст"-"заменяющий" с указанием разделителя (на подобие csv) ну и конечно же с поддержкой юникода/экранирования. Ибо пытался такой список создать и в батнике цикл сделать, но батник юникод не может воспринять, а программа экранируемые символы не интерпретирует и тупик..
Чтобы сделать замену текста по списку, файл со списком замен можно задать через параметр -list http://nhutils.ru/blog/nhreplace/help/#list, там не csv, а на каждой строке задаются те же параметры, что и в обычной командной строке, поэтому в одном списке можно делать одновременно замену текста и по регулярному выражению, и по обычному тексту (plain text). Ещё один плюс множественных замен по списку – все указанные в списке операции замены текста выполняются за один проход обработки текстового файла, т.е. это быстрее, чем многократно запускать в командном файле обработку одного текстового файла с разными операциями замены текста. Кодировка файла может быть в том числе и unicode. Но ввод символов Unicode в заменяющем тексте через \xxxx в текущей версии не поддерживается.
janci
Сообщения: 7
Зарегистрирован: 16 мар 2015, 16:51
Контактная информация:

Re: Юникод символы в заменяющем тексте

Сообщение janci »

nhutils писал(а):Чтобы сделать замену текста по списку, файл со списком замен можно задать через параметр -list http://nhutils.ru/blog/nhreplace/help/#list, там не csv, а на каждой строке задаются те же параметры, что и в обычной командной строке, поэтому в одном списке можно делать одновременно замену текста и по регулярному выражению, и по обычному тексту (plain text).
Спасибо. Отлично, я об этой опции впервые слышу. В архиве с программой справка есть, но не декларирует её.
Но тем не менее у меня она не работает.
Задаю команду:

Код: Выделить всё

nhrplc -list:DSL_substu.txt,unicode -cp:unicode RusLat_16.bak
Файл DSL_substu.txt следующего содержания (UTF-16 BE BOM):

Код: Выделить всё

-spt:"aer,aeris" -t:"aër,aëris"
-spt:"aeneus," -t:"aêneus,"
-spt:"aerop" -t:"aërop"
-spt:"aerinus," -t:"aërinus,"
-spt:"aeriportus" -t:"aëriportus"
-spt:"aloe,es" -t:"aloë,ês"
-spt:"coeffic" -t:"coëffic"
-spt:"coemo,emi" -t:"coëmo,êmi"
-spt:"coemptio," -t:"coêmptio,"
-spt:"coeo,ii" -t:"coëo,ii"
-spt:"coerceo," -t:"coërceo,"
-spt:"cogo,egi" -t:"cogo,coêgi"
-spt:"introeo" -t:"introëo"
-spt:"kalanchoe,es" -t:"kalanchoë,ês"
-spt:"poema," -t:"poëma,"
-spt:"poeta,ae" -t:"poëta,ae"
-spt:"poesis,is" -t:"poësis,is"
-spt:"poeticus" -t:"poëticus"
-spt:"societatem coeo," -t:"societatem coëo,"
-spt:"~" -t:"≈"
и ничего не происходит. Программа ничего не выдаёт, просто возврат происходит. Замены не произведены, дата модификации файла старая.
Что делаю не так? Версия программы 2.3.0
nhutils
Сообщения: 595
Зарегистрирован: 09 дек 2009, 18:08
Контактная информация:

Re: Юникод символы в заменяющем тексте

Сообщение nhutils »

Замена по списку была добавлена в версии 2.5 http://nhutils.ru/blog/nhreplace-v2-5-0/, рекомендую использовать последнюю версию, на данный момент это 2.6.1 http://nhutils.ru/blog/nhreplace-v2-6-1/
janci
Сообщения: 7
Зарегистрирован: 16 мар 2015, 16:51
Контактная информация:

Re: Юникод символы в заменяющем тексте

Сообщение janci »

Скачал последнюю. Выполняю ту же команду: инструкция по адресу 0x...... обратилась к памяти по адресу 0x.... память не может быть read.
Видимо не судьба :(
Ан-нет. Пошло, но без указания кодировки. Так ошибка:

Код: Выделить всё

nhrplc -list:DSL_substu.txt,unicode -cp:unicode RusLat_16.bak
а так пошло:

Код: Выделить всё

nhrplc -list:DSL_substu.txt -cp:unicode RusLat_16.bak
Получается кодировку файла со списком нельзя указать, как в справке написано?
---------
И ещё по кавычках хотел спросить. Если текст поиска и замены заключается в кавычки, то выходит использовать их в целях замены нельзя и я не смогу вставить кавычки. Правильно? или можно чередовать одинарные-двойные?.
Спасибо за помощь.
nhutils
Сообщения: 595
Зарегистрирован: 09 дек 2009, 18:08
Контактная информация:

Re: Юникод символы в заменяющем тексте

Сообщение nhutils »

janci писал(а):Получается кодировку файла со списком нельзя указать, как в справке написано?
Это ошибка, будет исправлено.
janci писал(а):И ещё по кавычках хотел спросить. Если текст поиска и замены заключается в кавычки, то выходит использовать их в целях замены нельзя и я не смогу вставить кавычки. Правильно? или можно чередовать одинарные-двойные?
Сейчас не получится использовать кавычки, будут добавлены в будущей версии.
nhutils
Сообщения: 595
Зарегистрирован: 09 дек 2009, 18:08
Контактная информация:

Re: Юникод символы в заменяющем тексте

Сообщение nhutils »

janci писал(а):Получается кодировку файла со списком нельзя указать, как в справке написано?
janci писал(а):И ещё по кавычках хотел спросить. Если текст поиска и замены заключается в кавычки, то выходит использовать их в целях замены нельзя и я не смогу вставить кавычки. Правильно? или можно чередовать одинарные-двойные?
Новая версия nhreplace v2.7.0 http://nhutils.ru/blog/nhreplace-v2-7-0/ содержит исправление указанной ошибки и возможность использования кавычек в строке поиска (параметр -set) и в строке замены (параметр -et) через \", \xHH, \uHHHH
janci
Сообщения: 7
Зарегистрирован: 16 мар 2015, 16:51
Контактная информация:

Re: Юникод символы в заменяющем тексте

Сообщение janci »

nhutils писал(а):Новая версия nhreplace v2.7.0 http://nhutils.ru/blog/nhreplace-v2-7-0/ содержит исправление указанной ошибки и возможность использования кавычек в строке поиска (параметр -set) и в строке замены (параметр -et) через \", \xHH, \uHHHH
Спасибо. Очень хочу протестировать и в ближайшее время написать об nhreplace на моём блоге, но... Я конечно извиняюсь, но на странице скачивания лежит версия 2.6.1 а 2.7 нет. Прошу выложить свежую версию, или ткнуть прямую ссылку, где она находится.
Закрыто