Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Преобразование кодировок UTF8 to WIN1251 / 5 сообщений из 5, страница 1 из 1
15.10.2014, 13:36:44
    #38777303
Sufir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование кодировок UTF8 to WIN1251
Суть:
Есть две БД. Первая в UTF8, вторая WIN1251. Из первой данные регулярно должны переноситься во вторую.
Собственно раньше и переносились нормально, пока первая так же была в 1251. Недавно первую переключили на UTF. Вторую переключить в ближайшее время возможным не представляется.

Всё, в принципе, нормально если указать client_encoding=WIN1251 в коннекте или воспользоваться функцией конвертации: convert (' string ', ' UTF8 ', ' WIN1251 ') но ровно до тех пор пока в строке не встретится символ отсутствующий в 1251.
В таком случае получаем ошибку: ERROR: character 0xcc81 of encoding "UTF8" has no equivalent in "WIN1251"

Может кто-то посоветовать, что можно сделать?

P.S.: Например в PHP есть возможность указать //IGNORE и символы которые не могут быть представлены в требуемой кодировке, будут просто удалены. Такой вариант был-бы идеален, в моём случае.
P.P.S.: Перенос осуществляется программой на С (не PHP) к исходникам которой доступа у меня нет. Я могу поменять только SQL-запросы получения и вставки данных и коннект, поэтому решение и нужно средствами БД.
...
Рейтинг: 0 / 0
15.10.2014, 13:53:49
    #38777338
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование кодировок UTF8 to WIN1251
Sufir Суть:
P.P.S.: Перенос осуществляется программой на С (не PHP) к исходникам которой доступа у меня нет. Я могу поменять только SQL-запросы получения и вставки данных и коннект, поэтому.

Значит никак от слова совсем (если "решение и нужно средствами БД").

А так выгрузить в utf8 файл а дальше iconv в win1251 и загрузка.
...
Рейтинг: 0 / 0
29.10.2014, 15:23:47
    #38790828
Sufir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование кодировок UTF8 to WIN1251
Maxim Boguk, фалы выгружать/загружать не вариант, перекачка идёт каждые 5-10 минут. Эдакая своеобразная форма реплики получается... В общем запилил на php, по крону запускаю.
...
Рейтинг: 0 / 0
29.10.2014, 16:09:09
    #38790923
tadmin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование кодировок UTF8 to WIN1251
Sufir,
у нас был проблема со старым приложением, которое ломалось от utf символов.
Сделали функцию: на входе текст, на выходе он же, но очищенный от не 1251 символов. Вы можете XML приводить к тексту,выпиливать из своего лишнее, потом обратно.

Код: plsql
1.
regexp_replace(in_Text, E'[^\\x0000-\\x007F\\x00A0\\x00A4\\x00A6\\x00A7\\x00A9\\x00AB\\x00AC\\x00AD\\x00AE\\x00B0\\x00B1\\x00B5\\x00B6\\x00B7\\x00BB\\x0401-\\x045f\\x0490\\x0491\\x2013\\x2014\\x2018\\x2019\\x201A\\x201C\\x201D\\x201E\\x2020\\x2021\\x2022\\x2026\\x2030\\x2039\\x203A\\x20AC\\x2116\\x2122]', '?', 'g');
...
Рейтинг: 0 / 0
30.10.2014, 14:18:31
    #38791711
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование кодировок UTF8 to WIN1251
что все хотят делать перекодировку чорти как.

в самой базе преобразование сделать.

чтобы избежать автоматической конвертации базой, можно ити через промежуточный тип бинари
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Преобразование кодировок UTF8 to WIN1251 / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]