Open tb114514 opened 6 months ago
请提供一下使用的文件并叙述一下发生时的操作过程,谢谢。 请把报错信息进行完整复制以便确认。
这样我不好确定是哪个部分的文本编码问题。
根据Unicode组织的映射表,U+E4C6属于一个Private Use Area,即用户自定义区 在GBK编码标准中并没有定义这样的用户区。您是使用了一些有特殊字符映射的字体吗?
在GB18030标准中提供了与Unicode对应的用户区域。 如果确认您的问题是由这个导致,以后这部分会全部改为GB18030解码。
请在此工具旁叙述一下当发生这种情况时,谢谢。 请复制错误信息以便确认。
👉我不好意思打扰你们,这是部分文本编码问题。
这是整个过程: 正在尝试从字幕所在文件夹载入字体... 目录下没有字体
正在分析字幕: "27.ass" [WARNING] 字体"创艺简中圆"可能不能正常子集化 字幕所需字体 "创艺简中圆": 字符数[924] "方正综艺简体": 字符数[82] "DFGKanTeiRyu-XB": 字符数[20] "方正准圆_GBK": 字符数[15] 字体输出路径: "D:\Desktop\银魂\Fonts\27" [1/4] 正在子集化…… [Warning] 正在使用地区编码"gbk"读取CMAP映射表
Traceback (most recent call last):
File "D:\game\MKVToolNix\ASFMKV_py1.02-pre12E.py", line 3077, in
请提供一下使用的文件并叙述一下发生时的操作过程,谢谢。 请把报错信息进行完整复制以便确认。
这样我不好确定是哪个部分的文本编码问题。
过程是:打开脚本选择"[B] 字体子集化 & MKV封装"-"[B] 子集化并封装"然后输入文件位置回车报错
好的,已检查这一步中出错时的字体创艺简中圆 首先它的CMAP表标识为GBK而非标准的Unicode,GBK字符集并没有U+E4C6对应的用户自定义区
其次,通过FontCreator检查,创艺简中圆中也没有定义U+E4C6
这意味着这一步的出错极有可能是您字幕文本的问题。
请您重新确认您的字幕是否有文本问题,
已经确认发生问题的字符位于字幕0:00:52.22,0:00:56.12
关于这一点神乐你倒是有一辈子都是吊儿郎当的面相啊
关于这一点
和神乐你倒是有一辈子都是吊儿郎当的面相啊
中间夹着字符U+E4C6
这个字符您真的需要吗?是否是输入或者拷贝错误导致了该字符的出现?
好的,已检查这一步中出错时的字体创艺简中圆 首先它的CMAP表标识为GBK而非标准的Unicode,GBK字符集并没有U+E4C6对应的用户自定义区
其次,通过FontCreator检查,创艺简中圆中也没有定义U+E4C6
这意味着这一步的出错极有可能是您字幕文本的问题。
请您重新确认您的字幕是否有文本问题, 已经确认发生问题的字符位于字幕
0:00:52.22,0:00:56.12
关于这一点神乐你倒是有一辈子都是吊儿郎当的面相啊
关于这一点
和神乐你倒是有一辈子都是吊儿郎当的面相啊
中间夹着字符U+E4C6这个字符您真的需要吗?是否是输入或者拷贝错误导致了该字符的出现?
倒是不需要,你可以告诉我找出这种违规字符的方法吗?
最简单的就是用可以将这些非标准Unicode字符显示为一个框框或者问号的查看器,进行人工检查 如:Windows记事本(我用的是Win11)、VS Code、甚至放到浏览器里等进行一遍浏览,人工检查一下。
由于这种字符显示得比较明显,应该还是很容易发现的。 似乎Aegisub会自动忽略这种字符?我导入没看见。
比较复杂的是使用正则表达式等对这些区域进行搜索
就这次的问题来说,您可以使用
[\uE000-\uF8FF]
进行正则表达式搜索
E000~F8FF就是这次字符所在的用户自定义区,一个一般不会设置字符的区域
您还可以根据报错信息 encode character '\ue4c6',转写为正则表达式[\ue4c6]
进行搜索
好的感谢
U+E4C6是不是被你们当成大空格用了x
换成U+3000(日语全角空格)
或者U+0020(一般半角空格)
就行
UnicodeEncodeError: 'gbk' codec can't encode character '\ue4c6' in position 0: illegal multibyte sequence