Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Поиск и замена юникода в базе данных

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Alinalessio

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть база данных, в которой некоторые данные записаны в виде юникода.
Вот так:

Код:
\u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440

Мне нужно найти и заменить в дампе базы некоторые слова. Для этого я использую такую строчку:

Код:
sed -i -r 's/старое\ слово/новое\ слово/g' ./db.sql

 
Возможно ли таким же образом найти и заменить в дампе данные, которые записаны юникодом?
Например найти это:

Код:
\u0421\u0442\u0430\u0440\u043e\u0435 \u0441\u043b\u043e\u0432\u043e

и заменить на это:

Код:
\u041d\u043e\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e

 
Юникод использует обратные слеши, а в строке поиска и замены, обратный слеш говорит о том, что после него последует какой-то знак, который следует принимать как он записан, а не как часть синтаксиса. Так как все-таки записать поиск и замену, если нужно найти не обычные слова, а закодированные?

Всего записей: 223 | Зарегистр. 21-06-2010 | Отправлено: 20:39 14-08-2018
YuriyRR



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alinalessio
чтобы передать специальный символ !$()*+.<>?[\]^{|} нужно его экранировать
символом \. Тоесть чтобы прередать обратный слэш нужно писать \\.

Всего записей: 516 | Зарегистр. 07-06-2007 | Отправлено: 01:40 15-08-2018
Alinalessio

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
чтобы передать специальный символ !$()*+.<>?[\]^{|} нужно его экранировать  
символом \. Тоесть чтобы прередать обратный слэш нужно писать \\.  

 
Да, я так и пытался. Экранировал каждый обратный слеш приводя к такому виду  

Код:
\\u043f\\u0440\ \\u043e

Где все обратные слеши и пробелы, экранированы обратными слешами.
 
Но, подозреваю даже сам поиск не срабатывает. Я даже пытался в phpmyadmin поиском найти этот кусок, который копирую прямо из таблицы, но поиск его не находит.
Может быть дело в том, что в таблице запись выглядит так:

Код:
{"1":{"meta_title":"\u0420\u0435\u043c\u043e\u043d\u0442 \u0438 \u043f\u0440\u043e\u0434\u0430\u0436\u0430 \u0431\u044b\u0442\u043e\u0432\u043e\u0439 \u0442\u0435\u0445\u043d\u0438\u043a\u0438","meta_description":"\u0420\u0435\u043c\u043e\u043d\u0442 \u0438 \u043f\u0440\u043e\u0434\u0430\u0436\u0430 \u0431\u044b\u0442\u043e\u0432\u043e\u0439 \u0442\u0435\u0445\u043d\u0438\u043a\u0438", ...

и т.д.
Другими словами, записано все в одну строку, а я пытаюсь вырвать кусок этой строки, то что в кавычках и заменить другим содержимым.
Если поиск не срабатывает из-за того, что искомая комбинация символов находится внутри строки без пробелов, то может быть есть какие-то операторы, позволяющие обойти это?

Всего записей: 223 | Зарегистр. 21-06-2010 | Отправлено: 07:56 15-08-2018
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Поиск и замена юникода в базе данных


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru