Menü
PostGreSQL 2 Şubat 2026 person Semih

PostgreSQL18 – Encoding, Locale, ICU Locale ve Timezone Ayarlamaları

Encoding türlerinden birkaç tane açıkla,

Bu yazımda ise Locale, Encoding ve Timezone gibi ayarlara bakacağız. Bu ayarları yapmanız verinin nasıl saklanacağını, nasıl sıralacağını ve zaman damgasının nasıl olacağını belirleyen temel ayarlamalardır. Bu ayarlamaları genel olarak Cluster oluştururken ya da DB oluştururken yaparsınız ve sonrasında değiştiremezsiniz.

Encoding (Karakter Seti) :

DB’nizdeki veri setlerinin hangi karakter kodlama kümesiyle saklanacağını belirler. Bu ayarı yaptıktan sonra değiştiremezsiniz, yeniden DB oluşturmanız gerekir.

Aşağıdaki komut yardımıyla hangi karakter setinin belirlendiğini görebilirsiniz.

> SHOW server_encoding;

Sonucunda UTF8 görüyorsanız; Dünya üzerinde bulunan yazı dillerinin hemen hemen hepsini temsil eden karakterlerin kodlamasını barındıran kümedir. Bu sayede Türkçe karakterleride içericeğini bilirsiniz.

PSQL içerisinde oluşturacağınız DB’ler için aşağıdaki komudu kullanarak karakter kodlama kümesini istediğiniz gibi de belirleyebilirsiniz.

> CREATE DATABASE sistemdostu WITH ENCODING = 'UTF8';

Bu ayarda aynı şekilde değiştirilemez.

Locale (Dil ve Sıralama Kuralları) :

Index’leme işlemi Harf sırasına göre oluşturulduğundan dolayı bu ayarımızda önemli oluyor. Aynı şekilde DB’mizde sıralama ve karşılaştırma işlemini burada belirlediğimiz dil kuralına göre yapıyor. Büyükküçük harflerin Türkçe’de diğer dillerle karıştırılmaması için yapılıyor. Çünkü küçük i ve büyük İ, Türkçe’de var ama İngilizce’de yok. İşte bunları belirleyen ayarlamamız.

Bazı sorgularımızda da ORDER BY kullandığımızda sonuçları etkileyen sıralama bilin bakalım hangisi, locale 😀

Unutmayın bu ayarıda değiştiremezsiniz.

> CREATE DATABASE sistemdostu WITH ENCODING='UTF8' LC_COLLATE='tr_TR.UTF-8' LC_CTYPE='tr_TR.UTF-8';

Ama bunlar klasik zamanda kalmış biz psql18 de işlemler yaptığımız için aşağıdaki gibi ayarlamalar yapmamız gerekiyor.

ICU Locale (International Components for Unicode) (PSQL18) :

OS locale bağımlılığını azaltır, daha tutarlıdır.

> CREATE DATABASE sistemdostu WITH TEMPLATE=template0 ENCODING='UTF8' LOCALE_PROVIDER=icu ICU_LOCALE='tr';

Buradaki önemli nokta varsayılan template1 olduğu için ve cluster oluşturulurken template1 db’si libc ile oluşturulduğu için biz db’mizi TEMPLATE=template0 komudu ile boş olandan, icu olarak oluşturmuş oluyoruz.

Timezone (Zaman Dilimi) Ayarlamaları :

Timestamp alanlarında bulunan now(), current_timestamp gibi fonksiyonlarının hangi zaman dilimine göre çalışacağını belirlemek için bu ayarı kullanırız. Bu sayede Log ve kayıt zamanları belirlediğimiz zaman diliminde ayarlanır, kullanıcı lokasyonuna göre yerel saat ayarlaması yapılabilir.

> SHOW timezone;

Komudu ile hangi zaman diliminde olduğunu kontrol edebilirsiniz.

Postgresql.conf dosyasından da aşağıdaki gibi düzenleme yaparak zamanı İstanbul olarak ayarlayabilirsiniz.

timezone = 'Europe/Istanbul'

Bu kısımda uygulanan zaman dilimi ayarı genelde UTC olarak bırakılır ve uygulamalarımızda zaman dilimi, yerel saat’e dönüştürelecek şekilde ayarlanır. Bu kullanım için en iyi öneridir. Ama tabi ki keyfimize kalmış bir durum 😛

Bu yazımda bu kadar arkadaşlar. Beni desteklemek isterseniz Sosyal Medya kanallarımı takip etmeniz çok iyi olur. Teşekkürler.

edit_note Bir Yorum Bırakın