Я скопировал 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 записывать значения в разных кодировках?
postgresql, тип поля text и не utf-8 - как это работает?
Модератор: Модераторы разделов
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: postgresql, тип поля text и не utf-8 - как это работает?
iconv -f cp1251 -t utf8 file > file.utf8
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: postgresql, тип поля text и не utf-8 - как это работает?
Bizdelnick это моя беда, мне ее уже указвают. Проблема в том, что кодировка 1251 взята просто как пример. Я парсю главные страницы и robots.txt с мира, то есть не только рунет. 1. Очень сложные и малопонятные кодировки, например, просто указана кодировка jp. 2. Оказывается даже роботс далеко не всегда в utf-8.
Таким образом мне бы хотелось именно универсальное решение как заносить любые кодировки в базу, без ручного определения кодировки и конвертации.
Может проще этот вопрос решать так? Автоматическое преобразование кодировок
Таким образом мне бы хотелось именно универсальное решение как заносить любые кодировки в базу, без ручного определения кодировки и конвертации.
Может проще этот вопрос решать так? Автоматическое преобразование кодировок
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: postgresql, тип поля text и не utf-8 - как это работает?
enconv -x utf8 <index.html >index.html.utf8
robots.txt всегда должен быть в ASCII (за исключением комментариев), так что его конвертировать не надо.
robots.txt всегда должен быть в ASCII (за исключением комментариев), так что его конвертировать не надо.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: postgresql, тип поля text и не utf-8 - как это работает?
Никак!
Кодировка поля задаётся в свойствах таблицы. Текстовые поля при работе перекодируются из кодировки клиента и обратно.
Но вы можете установить любую кодировку сессии и менять её на лету. Только это - сомнительная практика, лучше текст перекодировать заранее. Есть библиотека iconv, есть привязки ко всем языкам, но что для этого есть в PHP - не знаю.
В крайнем случае установить тип поля BLOB и записывать туда без перекодировки.
Re: postgresql, тип поля text и не utf-8 - как это работает?
В крайнем случае установить тип поля BLOB и записывать туда без перекодировки.
как я понял bytea - это по сути blob в постгрес. Меня настораживает, что они советют чего то там экранировать. Далее мне не совсем понятно как физически задать это поле (надо указывать размер или как text). Еще - будет ли там работать поиск подстрок?
-----------
нет, всё таки bytea - это совсем не то что я хотел.