Я довольно новичок в python, но так как мой родной язык включает в себя некоторые неприятные умляуты, я должен погрузиться в кошмар, чтобы кодирование было в самом начале. Я прочитал текст joelonsoftware по кодированию и понял разницу между кодовыми точками и фактическими визуализацией букв (и соединение между юникодом и кодировками). Чтобы избавить меня от неприятностей, я нашел 3 способа борьбы с умлаутами, но я не могу решить, какой из них подходит для ситуаций. Если кто-то может пролить свет на него? Я хочу иметь возможность писать текст в файл, читать с него (или sqlite3) и выдавать текст, включая чтение удобочитаемых умлетов ... Спасибо большое!Какой из этих методов кодирования является самым надежным?
# -*- coding: utf-8 -*-
import codecs
# using just u + string
with open("testutf8.txt", "w") as f:
f.write(u"Österreichs Kapitän")
with open("testutf8.txt", "r") as f:
print f.read()
# using encode/decode
s = u'Österreichs Kapitän'
sutf8 = s.encode('UTF-8')
with open('encode_utf-8.txt', 'w') as f2:
f2.write(sutf8)
with open('encode_utf-8.txt','r') as f2:
print f2.read().decode('UTF-8')
# using codec
with codecs.open("testcodec.txt", "w","utf-8") as f3:
f3.write(u"Österreichs Kapitän")
with codecs.open("testcodec.txt", "r","utf-8") as f3:
print f3.read()
EDIT: Я проверил это (содержимое файла 'Österreichs Kapitän'):
with codecs.open("testcodec.txt", "r","utf-8") as f3:
s= f3.read()
print s
s= s.replace(u"ä",u"ü")
print s
Должен ли я использовать u'string»(юникод) всюду в моем коде? Я узнал, что если я просто использую пустую строку (без «u»), замена umlauts не сработала ...
Спасибо большое, это дало мне некоторое представление ... не опубликовал ли код в комментариях? – Mike
Вы можете нажать кнопку «help» рядом с полем комментария, чтобы узнать о принятом синтаксисе (они называют его мини-Markdown). Код в комментариях должен быть окружен обратными окнами ('). – rkrzr
Спасибо. Должен ли я писать 'u" österreich ", чтобы иметь возможность работать, например. заменить буквы? Пожалуйста, см. Мой отредактированный вопрос для всего примера ... – Mike