⚖️
UYAP Teknik Destek Hukukçular İçin UYAP, Java ve UDF Çözüm Masası

E-Tebligat (UETS) iletilerinde gelen XML tabanlı üst veriyi DYS'ye aktarırken karakter kodlaması (UTF-8 / ISO-8859-9) uyuşmazlığı nedeniyle Türkçe karakterler bozuk çıkıyor, nasıl düzeltilir?

Ulusal Elektronik Tebligat Sistemi (UETS) üzerinden gelen resmi e-tebligat paketlerinin üst veri (metadata.xml) ve delil kayıtlarını kurumumuzun Doküman Yönetim Sistemi'ne (DYS) aktarmaya çalışıyoruz. Ancak aktarım tamamlandığında tebligat başlığında ve taraf bilgilerinde 'ş, ğ, ı, İ, ö, ü' gibi Türkçe karakterlerin soru işareti veya bozuk karakter blokları şeklinde göründüğünü fark ettik. DYS ve UETS arasındaki UTF-8 ile ISO-8859-9 (Turkish) karakter kodlama uyuşmazlığını kalıcı olarak nasıl çözebiliriz?
Durum: Çözüldü Kategori: Soru-Cevap

2 Cevap

✓

UETS (PTT Ulusal Elektronik Tebligat Sistemi) standart olarak uluslararası OASIS e-Delivery şartnamelerine uygun şekilde tüm XML üst verilerini ve delil kayıtlarını UTF-8 (genellikle BOM'suz) karakter seti ile üretir. Buna karşın, kamu kurumlarında ve adliye altyapısında uzun yıllardır kullanılan pek çok DYS (Doküman Yönetim Sistemi) veritabanı veya entegrasyon ara yazılımı geleneksel Windows-1254 veya ISO-8859-9 (Latin-5) Türkçe kodlama tablosunu varsayılan olarak kabul eder. Karakter akışı (stream) okunurken doğru dönüştürme (encoding transcode) yapılmadığında Türkçe bayt dizilimleri 'mojibake' veya geçersiz karakter simgelerine dönüşür.

Bu uyuşmazlığı gidermek için aşağıdaki teknik çözüm basamaklarını takip etmelisiniz:

  • Entegratör / Servis Katmanında Kodlama Dönüşümü: Eğer UETS'ten verileri REST veya SOAP web servisi üzerinden otomatik alıyorsanız, gelen HTTP yanıt başlığındaki Content-Type: application/xml; charset=utf-8 değerini kontrol edin. DYS import servisinizin gelen bayt akışını Encoding.UTF8.GetString(bytes) ile okuyup veritabanına aktarırken veritabanı bağlamının nvarchar / UTF-8 destekli olduğundan emin olun.
  • Manuel Yüklemelerde XML Header ve Kodlama Eşitleme: İndirilen metadata XML dosyasını Notepad++ ile açın. Dosyanın ilk satırındaki <?xml version="1.0" encoding="UTF-8"?> bildirimini kontrol edin. Üst menüden Kodlama (Encoding) kısmına gelip UTF-8'den ANSI'ye Dönüştür (veya ISO-8859-9) seçeneğini seçip kaydedin. Böylece dosya hem fiziksel olarak Windows Türkçe karakter kodlamasına döner hem de DYS ayrıştırıcısı karakterleri doğru algılar.
  • JVM ve Sunucu Parametreleri: DYS istemcisi veya uygulama sunucusu Java tabanlı çalışıyorsa, başlatma parametrelerine (JVM argümanları) -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 parametresini ekleyerek ortamın sistem varsayılan kodlama yerine evrensel UTF-8 standardını benimsemesini sağlayın.

Bu konfigürasyon yapıldıktan sonra içeri aktarılan tüm şüpheli, sanık, tebligat muhatabı ve mahkeme unvanları kusursuz şekilde Türkçe karakterlerle indekslenecektir.

Yanıtlayan
Yazılım Mimarı Tolga S.

Bu sorun tamamen UETS'ten inen XML dosyasının UTF-8 olması, DYS'nin ise Windows Türkçe (ANSI/ISO-8859-9) beklemesinden kaynaklanıyor. Hızlı çözüm olarak XML dosyasını Notepad++ ile açıp üst menüden 'Kodlama -> Karakter Seti -> Türkçe -> ISO 8859-9' seçin ve ardından 'ANSI Olarak Kaydet' diyerek dosyayı güncelleyin. Dosyayı DYS'ye bu şekilde yüklediğinizde 'ğ, ş, ı' gibi karakterler anında düzelecektir.

Yanıtlayan
Sistem Uzmanı Murat K.