Программирую недавно (около 6 месяцев). Сейчас пишу cms, использую PDO. При подключении к базе данных Postgresql выдает ошибку. Проблема не в самой ошибке, а в том, что сообщение выводится в другой кодировке - ромбики. Вот пример: PHP: [message:protected] => SQLSTATE[08006] [7] �����: ���� ������ "PdoPgsql" �� ���������� Смотрел в google, целый день ушел на поиск решения этой проблемы (чтобы сообщение об ошибке выводилось на обычном английском языке, как например в mysql в такой ситуации), но ничего конкретного не нашел. Только в одном ресурсе было сказано, что подобное возможно из-за того, что сообщение в этом случае идет через локаль windows (У меня windows). Но как решить эту проблему
Да, конечно, это в ДАННОМ КОНКРЕТНОМ СЛУЧАЕ решает проблему. Но как это применить для общего случая. Ведь кодировка postgre в общем случае может быть и другой. Я понял уже, что причина появления этих ромбиков в том, что БД отвечает не по-английски, а в своей кодировке. Я переустановил у себя на localhost эту базу в кодировке utf-8 и все стало выводится нормально. А как быть, если сайт будет у хостера, у которого кодировка неизвестна изначально? Как удалось выяснить, большинство хостеров ставит эту базу в utf-8. Но в общем случае, видимо, придется узнать кодировку этой базы, например, $hostersLocal и дальше уже так: PHP: If($hostersLocal != 'utf-8') { $value = iconv($hostersLocal, 'UTF-8', $value); } Ничего другого здесь, видно, не поделать
а мне кажется что это происходит изза того что постгришка на винде крутится - поэтому и кодировку взяла виндовскую ... ну это так мысли =)
Я об этом и не подозревал (что такое возможно). Когда работал с mysql, все было как-то естественней, предсказуемым. Сообщения в любом случае выводились либо на английском, либо (если подключение создано) в заданной кодировке. А какие здесь "подвязки" в postgre с windows (а может и еще с чем-то?). Сейчас пока занят, когда освобожусь, постараюсь углубиться в этот вопрос - так, для общего развития, - может пригодится.
В файле .htaccess пропиши AddDefaultCharset UTF-8 Закинь в корень сайта. Открываешь файл через Notepad++ > Кодировки > Кодировать в utf-8 (без BOM)
аххха ха = мои мысли оказались правы - сматри http://postgresql.ru.net/docs/win7_inst.html Это довольно важный шаг, ибо локаль определяет такой важный параметр как кодировка данных в базах. На картинке вы видите, что я выбрал "Russia, Russia". В этом случае, кодировка вашей БД будет windows-1251. Возможно, это именно то, что вам нужно, но большинство людей всё-таки предпочитает работать с кодировкой UTF-8. Эта кодировка будет установлена в том случае, если в данном окне вы выберите локаль по умолчанию: "by default"