Для PostgreSQL
pgsql://user:password@host[:port]|[local]/database?
charset=значение&
ClientCharset=кодировка&
autocommit=1&
standard_conforming_strings=0&
datestyle=ISO,SQL,Postgres,European,US,German
Необязательные параметры:
port — номер порта.
Можно задать: user:password@host:port/database, а можно: user:password@local/database.
В этом случае произойдет соединение с сервером, расположенным на локальной машине.
charset — сразу после соединения с сервером выполняет команду SET CLIENT_ENCODING=значение;
ClientCharset — задает кодировку, в которой необходимо общаться с SQL-сервером, перекодированием занимается драйвер;
autocommit — по умолчанию Parser 3 автоматически выполняет COMMIT после каждого успешно выполненного запроса; если указать опцию autocommit=0, то такое поведение будет изменено и все запросы, написанные внутри одного оператора connect, будут выполняться в рамках одной транзакции; [3.3.0]
datestyle — если задан этот параметр, то сразу после соединения с сервером драйвер выполнит команду SET DATESTYLE=значение, по умолчанию ISO;
standard_conforming_strings — если установлен в 1, то отключается эскейпинг символа \ для соответствия SQL-стандартам. [3.4.3]
Пример: перекодирование средствами SQL-сервера (рекомендуется)
Допустим, данные в базе хранятся в кодировке UTF-8, а сайт работает в кодировке windows-1251, в этом случае нужно использовать следующую строку подключения:
pgsql://user:password@host/database?charset=win
Тогда сразу после соединения SQL-серверу будет выдана команда SET CLIENT ENCODING=win и сервер сам будет перекодировать принимаемые данные из кодировки win в кодировку, в которой данные хранятся у него в таблице, и обратно.
В этом случае следует указать кодировку, в которой работает сайт. Эта опция выполняет команду Postgres, поэтому необходимо использовать названия кодировок Postgres-сервера, которые отличаются от названий кодировок Parser 3, определяемых в конфигурационном файле.
Пример: перекодирование драйвером (работает со всеми версиями Postgres-сервера)
В редких случаях бывает, что невозможно использовать функции перекодирования, предоставляемые Postgres-сервером. Тогда можно задействовать механизмы перекодирования драйвера, используя опцию ClientCharset.
Допустим, данные в базе хранятся в кодировке windows-1251, а сайт работает в кодировке koi8-r, в этом случае можно использовать такую строку подключения:
pgsql://user:password@host/database?ClientCharset=windows-1251
Тогда данные, отправляемые SQL-серверу, будут перекодироваться драйвером из кодировки $request:charset (в данном примере koi8-r) в кодировку windows-1251, а принимаемые от SQL-сервера данные — обратно.
В этом случае нужно указать кодировку, в которой данные хранятся в БД. В этой опции нужно указать названия кодировок Parser 3, которые определяются в конфигурационном файле.