Çözüldü Python dosyasına Türkçe karakter yazıldığında metin bozuluyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
14 Eylül 2020
Mesajlar
2.976
Çözümler
72
Yer
İstanbul
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?
 
Çözüm
Evet, baş kısmına yazıp dener misiniz? Olmazsa bunu deneyin;

Python:
# -*- coding:utf-8 -*-
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: ascii der.

Yazdığı dosyada sıkıntı çıktığını düşünmüştüm ben. Normalde Windows yeni .txt dosyasını UTF-8 yapar.
Kod:
with open("Desktop/a.txt", "a") as f:
    f.write("öykü")
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:
import locale
print(locale.getencoding())
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:
with open("Desktop/a.txt", "a", encoding="utf-8") as f:
    f.write("öykü")
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.
 
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: ascii der.

Yazdığı dosyada sıkıntı çıktığını düşünmüştüm ben. Normalde Windows yeni .txt dosyasını UTF-8 yapar.
Kod:
with open("Desktop/a.txt", "a") as f:
    f.write("öykü")
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:
import locale
print(locale.getencoding())
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:
with open("Desktop/a.txt", "a", encoding="utf-8") as f:
    f.write("öykü")
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.


Hocam, gerçekten Python bilginiz çok kapsamlı. Tebrik ederim sizi.
 

Technopat Haberler

Geri
Yukarı