diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2019-05-29 12:00:06 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2019-05-29 12:01:51 +0300 |
commit | 8cbad902016d3aee763fc100b59d8f50a560df96 (patch) | |
tree | fd48032116692ffdc5bbaaaca7c0a5f025f96eb9 | |
parent | 8a13d1ed8daa6dbed277e9200da5fe96f85cb35f (diff) |
Fix T64833: FBX Import fails with long names.
Classical stupid issues when trying to shorten an utf8 string to match a
given bytes length... ;)
-rw-r--r-- | io_scene_fbx/__init__.py | 2 | ||||
-rw-r--r-- | io_scene_fbx/import_fbx.py | 7 |
2 files changed, 7 insertions, 2 deletions
diff --git a/io_scene_fbx/__init__.py b/io_scene_fbx/__init__.py index 818eae23..5d95db6d 100644 --- a/io_scene_fbx/__init__.py +++ b/io_scene_fbx/__init__.py @@ -21,7 +21,7 @@ bl_info = { "name": "FBX format", "author": "Campbell Barton, Bastien Montagne, Jens Restemeier", - "version": (4, 14, 11), + "version": (4, 14, 12), "blender": (2, 80, 0), "location": "File > Import-Export", "description": "FBX IO meshes, UV's, vertex colors, materials, textures, cameras, lamps and actions", diff --git a/io_scene_fbx/import_fbx.py b/io_scene_fbx/import_fbx.py index 624ea2f7..5957f837 100644 --- a/io_scene_fbx/import_fbx.py +++ b/io_scene_fbx/import_fbx.py @@ -70,7 +70,12 @@ def validate_blend_names(name): if len(name) > 63: import hashlib h = hashlib.sha1(name).hexdigest() - return name[:55].decode('utf-8', 'replace') + "_" + h[:7] + n = 55 + name_utf8 = name[:n].decode('utf-8', 'replace') + "_" + h[:7] + while len(name_utf8.encode()) > 63: + n -= 1 + name_utf8 = name[:n].decode('utf-8', 'replace') + "_" + h[:7] + return name_utf8 else: # We use 'replace' even though FBX 'specs' say it should always be utf8, see T53841. return name.decode('utf-8', 'replace') |