powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / 8.2 -> 8.3 изменения в функции convert (результат bytea)? зачем?
11 сообщений из 11, страница 1 из 1
8.2 -> 8.3 изменения в функции convert (результат bytea)? зачем?
    #35219378
Фотография Степан H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
8.2
Код: plaintext
convert(string text, [src_encoding name,] dest_encoding name) 

Код: plaintext
1.
2.
3.
4.
5.
select convert('абвгд','WIN1251','UTF8');

 convert
 bytea
 --------------------------------------------
 "абвгд(в UTF)"



8.3
Код: plaintext
convert(string bytea, src_encoding name, dest_encoding name) 

в результате

Код: plaintext
1.
2.
3.
4.
5.
select convert('абвгд','WIN1251','UTF8');

 convert
 bytea
 --------------------------------------------
 "\320\260\320\261\320\262\320\263\320\264"


как результат - сайт не работает.

Пожалуйста, помогите.
...
Рейтинг: 0 / 0
8.2 -> 8.3 изменения в функции convert (результат bytea)? зачем?
    #35219450
StX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
StX
Гость
Если WIN1251 - кодировка базы, а UTF-8 - кодировка сайта, то не проще ли глобально SET client_encoding=UTF8 поставить?

Если наоборот, то есть функция

convert_from(string bytea, src_encoding name) text
Convert string to the database encoding. The original encoding is specified by src_encoding. The string must be valid in this encoding.


Но если очень хочется, то можно и так
Код: plaintext
1.
2.
create function convert_from_to(s text, src text, dest text) returns text
language plperlu as 'use Encode; Encode::from_to($_[0], $_[1], $_[2]); $_[0]';
...
Рейтинг: 0 / 0
8.2 -> 8.3 изменения в функции convert (результат bytea)? зачем?
    #35219621
Фотография Степан H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо з помощь, однако это не поможет

1. База действительно в WIN1251, сайт в UTF8 (т.к. AJAX), однако а к базе конентятся клиенты и с WIN1251 и есть часть на простом PHP.

2. Зачем прикручивать language plperlu? ... если до этого банальный convert работал и не жужжал?
...
Рейтинг: 0 / 0
8.2 -> 8.3 изменения в функции convert (результат bytea)? зачем?
    #35220025
_Андрей_М
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь convert жужжит.
Полностью поддерживаю идею с установкой кодировки клиента. Наверняка это можно сделать в настройках подключения к базе из PHP или Jav'ы
Если Вам дорог convert, то можно доработать напильником:
Код: plaintext
select encode(convert('абвгд','WIN1251','UTF8'), 'escape');
(по-моему, так)
...
Рейтинг: 0 / 0
8.2 -> 8.3 изменения в функции convert (результат bytea)? зачем?
    #35220159
Фотография Степан H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
о напильнике ...

Код: plaintext
1.
2.
3.
select encode(convert('абвгд','WIN1251','UTF8'), 'escape');
 convert
 --------------------------------------------
 "\320\260\320\261\320\262\320\263\320\264"

о настройках PHP или Jav'ы ничего не нашел.

В общем результат таков:
Функцию убрали и вместо нее ничего не предложили.
)))

Гуру. Где я не прав?

Спасибо.
...
Рейтинг: 0 / 0
8.2 -> 8.3 изменения в функции convert (результат bytea)? зачем?
    #35220224
_Андрей_М
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прям не знаю, что и сказать. Лучше покажу
...
Рейтинг: 0 / 0
8.2 -> 8.3 изменения в функции convert (результат bytea)? зачем?
    #35220812
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Степан H.1. База действительно в WIN1251, сайт в UTF8 (т.к. AJAX), однако а к базе конентятся клиенты и с WIN1251 и есть часть на простом PHP.если исправлять эту ошибку во всех клиентах невозможно, но каждый из клиентов подключается к базе под своим отдельным логином/паролем - то можно её исправить на стороне сервера:
Код: plaintext
1.
alter role windows_user set client_encoding to 'WINDOWS-1251';
alter role ubuntu_user set client_encoding to 'UTF-8';
эти настройки будут автоматически применяться для их подключений к базе.
...
Рейтинг: 0 / 0
8.2 -> 8.3 изменения в функции convert (результат bytea)? зачем?
    #35221498
Фотография Степан H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПрям не знаю, что и сказать. Лучше покажу


у меня FreeBSD
кластер собиралсо так
Код: plaintext
/usr/local/etc/rc.d/postgresql initdb --locale=Russian_Russia. 1251  --encoding=WIN1251

Возможно там корни ?


Спасибо Ёш. Ваш вариант оказался наиболее приемлем.



Спасибо Всем!
...
Рейтинг: 0 / 0
8.2 -> 8.3 изменения в функции convert (результат bytea)? зачем?
    #35224777
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Степан H.у меня FreeBSD
кластер собиралсо так
Код: plaintext
/usr/local/etc/rc.d/postgresql initdb --locale=Russian_Russia. 1251  --encoding=WIN1251
Russian_Russia.1251 -- это название локали в windows, в FreeBSD она по моему называется по другому, чтонить типа - ru_RU.CP1251
...
Рейтинг: 0 / 0
8.2 -> 8.3 изменения в функции convert (результат bytea)? зачем?
    #35224784
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просмотреть список скомпилированных локалей можно командой: locale -a


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
8.2 -> 8.3 изменения в функции convert (результат bytea)? зачем?
    #35225356
Фотография Степан H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ё-ма-Ё!
Это ж куда я смотрел то???
ДЕйствительно! ru_RU. CP 1251 !!!

ОГРОМНЕЙШЕЕ СПАСИБО!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / 8.2 -> 8.3 изменения в функции convert (результат bytea)? зачем?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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