Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 29, 2017 10:46:41

SharpCoder
Зарегистрирован: 2017-11-29
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема при работе с кодировками в Blender

Добрый день!

Недавно понадобилось экспортировать модель из Autodesk revit 2016 в Blender через FBX.
При экспорте возникла проблема с наименованиями. Ревит для всех стен, перекрытий, дверей и мебели использует русские наименования, соответственно при экспорте все тоже русское. Видимо, есть какая-то проблема с кодировками, потому что некоторые символы отображаются неправильно (см. вложение).

Меня это не волновало до тех пор, пока я не решил использовать скрипты на Python:

 for ob in bpy.data.objects:
    print(ob.name)

Я сразу же получил ошибку:

 Traceback (most recent call last):
  File "<blender_console>", line 2, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 58: 
invalid continuation byte

Может быть, кто-нибудь с этим уже сталкивался?
Можно ли написать скрипт, который позволит удалить эти символы?

Прикреплённый файлы:
attachment error1.png (2,9 KБ)

Офлайн

#2 Ноя. 29, 2017 11:14:31

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Проблема при работе с кодировками в Blender

надо знать кодировку исходного текста. попробуй encode/decode

 >>> s = 'строка'
>>> s.encode('cp1251')
b'\xf1\xf2\xf0\xee\xea\xe0'
>>> s.encode('utf-8')
b'\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xba\xd0\xb0'
>>> s.encode('cp866')
b'\xe1\xe2\xe0\xae\xaa\xa0'
>>> s.encode('cp1251').decode()
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    s.encode('cp1251').decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf1 in position 0: invalid continuation byte
>>> s.encode('cp1251').decode('cp1251')
'строка'
>>> 

Офлайн

#3 Дек. 2, 2017 01:36:00

SharpCoder
Зарегистрирован: 2017-11-29
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема при работе с кодировками в Blender

К сожалению, это не помогло: я даже не могу выполнить без ошибок команду

 str = ob.name
сразу возникает исключение…

Видимо, это какие-то особенности Blender

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version