postgresql, тип поля text и не utf-8 - как это работает?

Модератор: Модераторы разделов

Ответить
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

postgresql, тип поля text и не utf-8 - как это работает?

Сообщение azsx »

Я скопировал wget'ом страницу в кодировке win-1251 в файл. Теперь через php хочу загнать эту страницу в бд в поле text. Внезапно, мне сперва надо привести эту страницу к utf 8 иначе выходит ошибка:
я в php поставил
setlocale (LC_ALL, "ru_RU.UTF-8");
header('Content-type: text/html; charset=UTF-8');
***
$znachenie = pg_escape_string($znachenie);
***
и ошибка не исчезает.
----
Как в text записывать значения в разных кодировках?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20790
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: postgresql, тип поля text и не utf-8 - как это работает?

Сообщение Bizdelnick »

iconv -f cp1251 -t utf8 file > file.utf8
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: postgresql, тип поля text и не utf-8 - как это работает?

Сообщение azsx »

Bizdelnick это моя беда, мне ее уже указвают. Проблема в том, что кодировка 1251 взята просто как пример. Я парсю главные страницы и robots.txt с мира, то есть не только рунет. 1. Очень сложные и малопонятные кодировки, например, просто указана кодировка jp. 2. Оказывается даже роботс далеко не всегда в utf-8.
Таким образом мне бы хотелось именно универсальное решение как заносить любые кодировки в базу, без ручного определения кодировки и конвертации.
Может проще этот вопрос решать так? Автоматическое преобразование кодировок
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20790
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: postgresql, тип поля text и не utf-8 - как это работает?

Сообщение Bizdelnick »

enconv -x utf8 <index.html >index.html.utf8
robots.txt всегда должен быть в ASCII (за исключением комментариев), так что его конвертировать не надо.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: postgresql, тип поля text и не utf-8 - как это работает?

Сообщение s.xbatob »

azsx писал(а):
16.08.2015 13:32
Как в text записывать значения в разных кодировках?

Никак!
Кодировка поля задаётся в свойствах таблицы. Текстовые поля при работе перекодируются из кодировки клиента и обратно.
Но вы можете установить любую кодировку сессии и менять её на лету. Только это - сомнительная практика, лучше текст перекодировать заранее. Есть библиотека iconv, есть привязки ко всем языкам, но что для этого есть в PHP - не знаю.
В крайнем случае установить тип поля BLOB и записывать туда без перекодировки.
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: postgresql, тип поля text и не utf-8 - как это работает?

Сообщение azsx »

В крайнем случае установить тип поля BLOB и записывать туда без перекодировки.

как я понял bytea - это по сути blob в постгрес. Меня настораживает, что они советют чего то там экранировать. Далее мне не совсем понятно как физически задать это поле (надо указывать размер или как text). Еще - будет ли там работать поиск подстрок?
-----------
нет, всё таки bytea - это совсем не то что я хотел.
Спасибо сказали:
Ответить