<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - psql - polskie znaki]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=175&amp;type=atom"/>
	<updated>2012-09-28T12:47:36Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=175</id>
		<entry>
			<title type="html"><![CDATA[Odp: psql - polskie znaki]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=3731#p3731"/>
			<content type="html"><![CDATA[Podepnę się, chociaż mój post powinien właściwie być w dziale dla początkujących.

Baza v. 8.3 stoi na SUSE 11, psql wykonuje się na WinXP.

psql -l = UTF-8
server_encoding = UTF-8
client_encoding = WIN1250

Wykonuję polecenie:
psql.exe -f "jakiś_plik_z_poleceniami" > "plik_wynikowy"

Kodowanie pliku wynikowego jest oczywiście w win-1250.

Czy bez jakiegokolwiek grzebania w bazie i jej konfiguracji można w jakiś sposób podczas tworzenia pliku wynikowego zmienić 'w locie' stronę kodową na na utf-8 lub 8859-2?]]></content>
			<author>
				<name><![CDATA[grzechu]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=963</uri>
			</author>
			<updated>2012-09-28T12:47:36Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=3731#p3731</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: psql - polskie znaki]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2668#p2668"/>
			<content type="html"><![CDATA[Dzięki, ale nie o to chodziło. Ja mam wszystko dobrze ustawione i już sam znalazłem rozwiązanie.
Tego się nie dało przestawić i pomogło dopiero przekompilowanie psql jeszcze raz z ustawionym PG_UTF. Chodziło o linuksa i wcześniej za Chiny Ludowe nie chciał przyjąć żadnych znaków spoza SQL_ASCII. Teraz chodzi jak złoto przy tych samych ustawieniach wszystkiego.
Nie wiem po co standardowe pakiety binarne są tak idiotycznie skompilowane..]]></content>
			<author>
				<name><![CDATA[atalk]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1265</uri>
			</author>
			<updated>2011-08-27T18:56:05Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2668#p2668</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: psql - polskie znaki]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2658#p2658"/>
			<content type="html"><![CDATA[Rozumiem, że cały czas chodzi o konsolę spod Windows, czyli cmd. Co do kodowania znaków, to zawsze w grę wchodzą trzy czynniki:

[list=*]
[*]kodowanie bazy danych (czyli właściwość [url=http://www.postgresql.org/docs/current/static/runtime-config-preset.html]server_encoding[/url])[/*]
[*]kodowanie klienta (client_encoding)[/*]
[*]strona kodowa cmd[/*]
[/list]

Jeżeli chodzi o pierwsze dwa punkty, to Postgres potrafi automatycznie konwertować je między sobą zgodnie [url=http://www.postgresql.org/docs/current/static/multibyte.html#MULTIBYTE-TRANSLATION-TABLE]tabelą 22-2[/url] w dokumentacji, czyli jeżeli dajmy na to baza jest w UTF-8, to kodowanie klienta może być bez problemu w WIN1250 i teoretycznie vice versa.

Tuż po wejściu do sesji psql może pojawić się komunikat:

[code]WARNING: Console code page (852) differs from Windows code page (1250)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.[/code]

Żeby sprawdzić wszystkie parametry można wykonać po psql:

[code]postgres=# SHOW server_encoding;
 server_encoding
-----------------
 UTF8
(1 row)
postgres=# SHOW client_encoding;
 client_encoding
-----------------
 UTF8
(1 row)
postgres=# \! chcp
Aktywna strona kodowa: 852[/code]

Rzecz polega na tym, żeby strona kodowa zgadzała się z kodowaniem klienta oraz na ustawieniu właściwej czcionki dla konsoli, czyli Lucida Console:

[code]postgres=# \! chcp 1250
Aktywna strona kodowa: 1250
postgres=# SET client_encoding TO 'WIN1250';
SET[/code]

Żeby ustawić permanentnie stronę kodową na 1250 (tym samym uciszając komunikat niezgodności s.k. 852 z początku sesji) i client_encoding, wystarczy dopisać je do skryptu C:\Program Files\PostgreSQL\9.0\scripts\runpsql.bat.

Dla sprawdzenia z pgAdmin:

[code]postgres=# CREATE TABLE PolskieZnaki (s text);
CREATE TABLE
postgres=# INSERT INTO PolskieZnaki VALUES ('ąćęłńóśżź');
INSERT 0 1[/code]

Oczywiście w powyższym przypadku najlepiej byłoby ustawić [b]wszystko[/b] na UTF-8 unikając konwersji WIN1250 ↔ UTF8 i z [url=http://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how/388500#388500]tego co wiem[/url], to od tego jest strona kodowa 65001, ale nie działa ona poprawnie wraz z psql (np. [url=http://archives.postgresql.org/pgsql-bugs/2009-02/msg00168.php]BUG #4678: codepage UTF8 crashes psql[/url]). Nawiasem pisząc jest jeszcze cmd /u, ale to z kolei ustawia kodowanie UTF-16 LE, którego Postgres nie obsłuży.

Jeżeli komuś zależy na kodowaniu ISO 8859-2 (zwane inaczej Latin-2), to można tak ustawić przez stronę kodową 28592 i także powinno działać:

[code]postgres=# \! chcp 28592
Aktywna strona kodowa: 28592
postgres=# SET client_encoding TO 'LATIN2';
SET[/code]

Mam nadzieje, że w ten sposób trochę się wyjaśniło w temacie.]]></content>
			<author>
				<name><![CDATA[gszpetkowski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1223</uri>
			</author>
			<updated>2011-08-24T15:15:10Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2658#p2658</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: psql - polskie znaki]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2637#p2637"/>
			<content type="html"><![CDATA[Ja mam podobny problem. Mam pod shellem ustawione polskie znaki, polskie locale itd. Uruchamiam psql i nie jestem w stanie żadnej polskiej litery wpisać. wyświetlane są dobrze jako wyniki kwerendy np., ale nie da się wprowadzić polskich znaków. 
Próbowałem różnych metod - z konsoli, łączenie się przez różne klienty ssh itd. ale to nie jest ten problem. Jak pisałem, pod shellem wszystko działa jak trzeba. Nie wiem co jest tego powodem... Może ktoś coś doradzi.]]></content>
			<author>
				<name><![CDATA[atalk]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1265</uri>
			</author>
			<updated>2011-08-20T16:18:50Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2637#p2637</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: psql - polskie znaki]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1569#p1569"/>
			<content type="html"><![CDATA[Należy ustawić kodowanie na UTF-8 i problem 'ogonkowy' zniknie.]]></content>
			<author>
				<name><![CDATA[marek]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=993</uri>
			</author>
			<updated>2009-11-15T16:56:19Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1569#p1569</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: psql - polskie znaki]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=721#p721"/>
			<content type="html"><![CDATA[Tak , instalację mam pod windą.]]></content>
			<author>
				<name><![CDATA[woziu]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=64</uri>
			</author>
			<updated>2009-04-14T14:30:20Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=721#p721</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: psql - polskie znaki]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=720#p720"/>
			<content type="html"><![CDATA[Rozumiem, że zainstalowałeś postgresa pod windą?]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2009-04-14T12:58:20Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=720#p720</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: psql - polskie znaki]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=719#p719"/>
			<content type="html"><![CDATA[Z poziomu bazy mam WIN1250]]></content>
			<author>
				<name><![CDATA[woziu]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=64</uri>
			</author>
			<updated>2009-04-14T12:41:24Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=719#p719</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: psql - polskie znaki]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=706#p706"/>
			<content type="html"><![CDATA[Ale 
[code]
psql -l
[/code]
nie wykonujesz z bazy tylko z poziomu systemu.
Z bazy możesz wykonać
[code]
\l
[/code]]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2009-04-10T08:42:33Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=706#p706</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: psql - polskie znaki]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=704#p704"/>
			<content type="html"><![CDATA[client_encoding WIN1250 
a polecenie psql -l ; błąd składni.]]></content>
			<author>
				<name><![CDATA[woziu]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=64</uri>
			</author>
			<updated>2009-04-10T08:33:32Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=704#p704</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: psql - polskie znaki]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=697#p697"/>
			<content type="html"><![CDATA[co w psql zwraca zapytanie
[code]
show client_encoding;
[/code]

Co zwraca polecenie
[code]
psql -l
[/code]]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2009-04-07T21:47:52Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=697#p697</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: psql - polskie znaki]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=696#p696"/>
			<content type="html"><![CDATA[Kodowanie WIN1250]]></content>
			<author>
				<name><![CDATA[woziu]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=64</uri>
			</author>
			<updated>2009-04-07T18:42:40Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=696#p696</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: psql - polskie znaki]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=695#p695"/>
			<content type="html"><![CDATA[Jakie kodowanie ustawiłeś w bazie]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2009-04-07T18:15:49Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=695#p695</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[psql - polskie znaki]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=694#p694"/>
			<content type="html"><![CDATA[Wykonuje przetwarzanie ciągów znaków.
SELECT imie, wzrost, rokurodz FROM osby WHERE imie IN ('Jarosław' , 'Paweł');

Co muszę zrobić aby psql wyświetlił mi ł ?
Jak zapisać ł w psql ?:)

Bazę tworzyłem w pgAdmin.]]></content>
			<author>
				<name><![CDATA[woziu]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=64</uri>
			</author>
			<updated>2009-04-07T17:26:05Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=694#p694</id>
		</entry>
</feed>
