Basis data PostgreSQL memiliki tipe karakter asli, "pengkodean server". Biasanya utf-8.
Semua teks dalam penyandian ini. Teks penyandian campuran tidak didukung, kecuali jika disimpan sebagai bytea
(yaitu sebagai urutan byte buram).
Anda tidak dapat menyimpan string "unicode" atau "non-unicode", dan PostgreSQL tidak memiliki konsep "varchar" vs "nvarchar". Dengan utf-8, karakter yang termasuk dalam rentang ASCII 7-bit (dan beberapa lainnya) disimpan sebagai satu byte, dan karakter yang lebih luas membutuhkan lebih banyak penyimpanan, jadi itu hanya otomatis. utf-8 membutuhkan lebih banyak penyimpanan daripada ucs-2 atau utf-16 untuk teks yang semuanya karakter "lebar", tetapi lebih sedikit untuk teks yang merupakan campuran.
PostgreSQL secara otomatis mengonversi ke/dari pengkodean teks klien, menggunakan client_encoding
pengaturan. Tidak perlu mengonversi secara eksplisit.
Jika klien Anda adalah "Unicode" (yang cenderung dikatakan oleh produk Microsoft ketika mereka mengartikannya sebagai UCS-2 atau UTF-16), maka sebagian besar driver klien menangani konversi utf-8 <--> utf-16 untuk Anda.
Jadi Anda tidak perlu peduli, selama klien Anda melakukan I/O dengan opsi charset yang benar dan menetapkan client_encoding
yang benar yang cocok dengan data yang sebenarnya dikirim melalui kabel. (Ini otomatis dengan sebagian besar driver klien seperti PgJDBC, nPgSQL, atau driver psqlODBC Unicode).
Lihat: