Writer metin yazdırma Ansi yerine UTF-8 nasıl?

Writer Windows (Windows 11 Türkçe üzerinde çalışıyor) sürümünde veritabanı bağlantılı form mektubu metin olarak yazdığımda ortaya çıkan .txt belgeler “Ansi” kodlamalı olarak oluşturuluyor.

Oysa bu belgelerin UTF-8 olarak oluşmasını istiyorum.

Aynı işlemi Linux altında yaptığımda hehangi bir ek işlem yapmaksızın istediğimi tam olarak elde edebiliyorum.

Wndows altında çaresi var mı?

İyi çalışmalar…

TEST: Yapay Zeka yanıtı
(Yanıtı faydalı bulduysanız yoruma yazabilirsiniz.)

Windows üzerindeki LibreOffice Writer, mail merge (form mektubu) çıktısını .txt olarak dışa aktarırken varsayılan olarak ANSI (Windows-1254) kodlaması kullanır. Linux’ta ise sistem yerel ayarları nedeniyle doğal olarak UTF-8 çıktısı alınır. Ne yazık ki Windows tarafında şu anda doğrudan arayüzden “TXT dosyasını UTF-8 üret” seçeneği yoktur.

Ancak aşağıdaki çözümlerden biri ile UTF-8 çıktıya ulaşabilirsiniz:

:jigsaw: 1. TXT dışa aktarırken “Save As” üzerinden UTF-8 seçilebiliyor

Mail Merge çıktısı oluştuktan sonra:

  1. Oluşan .txt dosyasını açın
  2. File → Save As seçin
  3. Dosya türünü Text (.txt) olarak bırakın
  4. Sağ altta bir “Edit Filter Settings” kutucuğu belirecektir → işaretleyin
  5. Kaydedince bir iletişim penceresi açılır
  6. Character Set bölümünden UTF-8 seçebilirsiniz

Not: Mail merge sırasında otomatik oluşturulan TXT dosyaları bu pencereyi açmaz; tek tek yeniden kaydetmek gerekir.

:jigsaw: 2. Mail Merge çıktısını “Metin (CSV) olarak dışa aktar” yöntemi

Bazı kullanıcılar mail-merge çıktısını önce CSV olarak üretip sonra TXT’ye dönüştürerek UTF-8 alabiliyor:

  1. Mail Merge → Output → “Save as single file”
  2. Tür olarak Text CSV (.csv) seçin
  3. Filtre ayarlarında UTF-8 seçilebilir
  4. Daha sonra CSV’yi Notepad/Notepad++ ile .txt olarak kaydedin (UTF-8 korunur)

Bu yöntem, içeriğiniz satır satır düz metinse çoğu durumda sorunsuz çalışır.

:jigsaw: 3. Makro ile Mail Merge çıktısını doğrudan UTF-8 kaydetmek (Kesin çözüm)

Writer’ın UNO API’si üzerinden metin dosyasını UTF-8 ile yazdırmak mümkündür.

Temel bir örnek (LibreOffice Basic):

Sub SaveAsUTF8
    Dim oDoc As Object
    Dim args(1) As New com.sun.star.beans.PropertyValue

    oDoc = ThisComponent

    args(0).Name = "FilterName"
    args(0).Value = "Text"
    args(1).Name = "FilterOptions"
    args(1).Value = "UTF8"

    oDoc.storeToURL("file:///C:/temp/cikti.txt", args())
End Sub

Mail merge işleminin son adımında belgeyi bu makro ile kaydederseniz sonuç dosyası UTF-8 olur.

İnternette “storeToURL UTF8 filteroptions” şeklinde aradığınızda benzer örnekler bulabilirsiniz.
LibreOffice topluluğu Windows kullanırken bu yöntemi en çok tavsiye ediyor.

:jigsaw: 4. Sistem bölgesel ayarı UTF-8 denemesi (sınırlı)

Windows 11’de şu ayar bazen LibreOffice’in TXT çıktı kodlamasını etkiliyor:

Settings → Time & Language → Language & Region → Administrative language settings → Change system locale → “Beta: Use UTF-8 for worldwide language support”

Bu çözüm:

  • Bazı programlarda işe yarıyor,
  • LibreOffice’te ise sonuç kullanıcıdan kullanıcıya değişiyor.

Mail merge için garantili bir çözüm değildir, ama denemek isterseniz sistem genelinde UTF-8 davranışı sağlar.

:dart: Özet

  • Windows’ta Writer TXT çıktısı varsayılan olarak ANSI oluşturur.
  • Linux’ta olduğu gibi otomatik UTF-8 kaydetme yerleşik olarak yoktur.
  • En pratik yol: dosyayı yeniden Save As → UTF-8 ile kaydetmek.
  • En kesin yol: Makro ile UTF-8 zorlamak.
  • CSV üzerinden UTF-8 almak bir başka uygulanabilir yöntemdir.

İstersen, mail merge sırasında otomatik UTF-8 kaydedebilen hazır bir makro da oluşturup mesajına ekleyebilirim.