#python #unicode #utf-8 #renpy
#python #юникод #utf-8 #renpy
Вопрос:
Я перевожу игру Ren’Py, которая включает переопределение функции, которая преобразует числа в записанные слова на определенном языке. Затем эти строки обрабатываются и вставляются в текст игры основным кодом игры (который я не могу изменить).
Моя проблема в том, что когда я возвращаю строки, содержащие символы, отличные от ascii, такие как ö
или ü
, игра выдает исключение, когда доходит до этой точки.
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 2-4: unexpected end of data
Использование кодов символов, подобных uC3B6
таким, не создает исключений, но в итоге я получаю поле-заполнитель вместо нужного мне символа.
Есть ли какой-либо способ заставить функцию правильно возвращать эти символы, не имея доступа к оставшемуся коду?
Комментарии:
1. Всегда публикуйте полную обратную трассировку. Какую версию python вы используете? Вы передаете строки Unicode или строки bytes? Каков результат
print(repr(mystring))
?2. Извините, я должен был упомянуть, что у меня очень мало опыта работы с Python (я даже не знал о существовании разных типов строк)… и, пытаясь разобраться во всем этом, мне просто удалось найти решение самостоятельно. ^^ ‘
Ответ №1:
Оказывается, я использовал неправильный escape-символ и неправильные шестнадцатеричные коды. И мне пришлось использовать строки Unicode. u'xF6'
и u'xFC'
отлично работает для двух символов, которые я пытался получить.