-
Notifications
You must be signed in to change notification settings - Fork 0
Description
问题描述
使用 endstone_ubackup 插件备份基岩版服务器世界时,备份线程崩溃,抛出 UnicodeEncodeError 异常,无法完成备份。
复现步骤
- 创建名称包含 Unicode 代理对字符的世界或文件(如部分 emoji、生僻 CJK 字符等非 BMP 字符)。
- 执行 endstone_ubackup 插件的备份功能。
- 查看服务器日志,观察到异常报错。
实际结果
备份线程崩溃,触发两次 UnicodeEncodeError,无法将文件写入 ZIP 压缩包。
错误日志
Exception in thread Thread-723 (on_backup_thread):
Traceback (most recent call last):
File "/usr/lib/python3.13/zipfile/init.py", line 519, in _encodeFilenameFlags
return self.filename.encode('ascii'), self.flag_bits
UnicodeEncodeError: 'ascii' codec can't encode characters in position 4-24: ordinal not in range(128)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.13/threading.py", line 1043, in _bootstrap_inner
self.run()
File "/usr/lib/python3.13/threading.py", line 994, in run
self._target(*self._args, **self._kwargs)
File "/home/cw/bedrock_server/plugins/.local/local/lib/python3.13/dist-packages/endstone_ubackup/ubackup.py", line 327, in on_backup_thread
zipf.write(file_path, os.path.relpath(file_path, worlds_file_path))
File "/usr/lib/python3.13/zipfile/init.py", line 1907, in write
with open(filename, "rb") as src, self.open(zinfo, 'w') as dest:
File "/usr/lib/python3.13/zipfile/init.py", line 1642, in open
return self._open_to_write(zinfo, force_zip64=force_zip64)
File "/usr/lib/python3.13/zipfile/init.py", line 1753, in _open_to_write
self.fp.write(zinfo.FileHeader(zip64))
File "/usr/lib/python3.13/zipfile/init.py", line 509, in FileHeader
filename, flag_bits = self._encodeFilenameFlags()
File "/usr/lib/python3.13/zipfile/init.py", line 521, in _encodeFilenameFlags
return self.filename.encode('utf-8'), self.flag_bits | _MASK_UTF_FILENAME
UnicodeEncodeError: 'utf-8' codec can't encode characters in position 4-24: surrogates not allowed
环境
Python版本:Python 3.13.5
endstone版本:0.11.2
插件版本:latest
操作系统:debian 13