Dosyayı append modunda ve UTF-8 kodlamasında açıp içine Türkçe karakter içeren bir yazı yazmaya çalıştığımda Türkçe karakterleri karışık bir karakter kombinasyonu olarak yazıyor. Mesela "öykü" yerine "Öykü" yazıyor. Nasıl düzeltebilirim?
Betik dosyasının başına mı?Kod:# encoding:utf-8
Bu kodu sayfa başına yazıp dener misiniz?
Teşekkürler.Evet, baş kısmına yazıp dener misiniz? Olmazsa bunu deneyin;
Python:# -*- coding:utf-8 -*-
Teşekkürler.
Derdiniz kaynak kodu dosyasında mı yoksa yazmaya çalıştığınız dosyada mı? Sunulan çözüm bana pek mantıklı gelmedi.
# -*- coding: ascii -*- şeklinde ayarlayıp dosyaya "öykü" yazmak isterseniz hata verir. SyntaxError: encoding problem: ascii der.with open("Desktop/a.txt", "a") as f:
f.write("öykü")
import locale
print(locale.getencoding())
with open("Desktop/a.txt", "a", encoding="utf-8") as f:
f.write("öykü")
Ben genel bir şeyler yazmış olayım, konu sahibi isterse bakar, devamını sorar.
Normalde Python dosyaları UTF-8 yazılır. Kaynak dosyası farklı bir şekildeyse bu konu sahibinin sorunu. Kodu yazdığı programı ayarlamalı. Verdiğiniz öneri kod çalıştırılırken o encodingi baz al gibi bir şey demek oluyor. Bu yüzden onu# -*- coding: ascii -*-şeklinde ayarlayıp dosyaya "öykü" yazmak isterseniz hata verir.SyntaxError: encoding problem: asciider.
Yazdığı dosyada sıkıntı çıktığını düşünmüştüm ben. Normalde Windows yeni .txt dosyasını UTF-8 yapar.
Bu kodu (path uygun şekilde) yazarsanız o dosya ANSI olur, daha doğrusu oluyor. Nedenine baktığımızda aşağıdaki kodun çıktısı yüzünden olduğunu öğreniyoruz. Çıktısı cp1252. Bu da ANSI'nin bir dalı.Kod:with open("Desktop/a.txt", "a") as f: f.write("öykü")
Bu şekilde yazıp açınca bende bir sorun çıkmıyor. Çünkü cp1252 ü ve ö harflerine sahip. Not defteri onu ANSI olarak görüo öyle açarsa güzelce öykü görürsünüz. Ama gidip o dosyayı VS Code gibi bir programla açarsanız onu UTF-8 olarak açmaya çalışıp �yk� yazmasını sağlar. Bu sorunu açtığımız dosyaya UTF-8 yazarak çözebiliriz. Onun çözümü de basit. Bu şekilde.Kod:import locale print(locale.getencoding())
Hatta bunu yazarken çalıştırınca başta ANSI, sonra UTF-8 olarak kaydetmemden dolayı artık not defteri de dosyayı UTF-8 olarak görüyor ve ilk yazdığım, başta güzel okunan öykü artık bozuk. Dosya içeriği �yk�öykü olmuş durumda.Kod:with open("Desktop/a.txt", "a", encoding="utf-8") as f: f.write("öykü")
Bu sitenin çalışmasını sağlamak için gerekli çerezleri ve deneyiminizi iyileştirmek için isteğe bağlı çerezleri kullanıyoruz.