Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

怎么解决? #34

Open
tb114514 opened this issue May 12, 2024 · 9 comments
Open

怎么解决? #34

tb114514 opened this issue May 12, 2024 · 9 comments

Comments

@tb114514
Copy link

UnicodeEncodeError: 'gbk' codec can't encode character '\ue4c6' in position 0: illegal multibyte sequence

@DYY-Studio
Copy link
Owner

请提供一下使用的文件并叙述一下发生时的操作过程,谢谢。
请把报错信息进行完整复制以便确认。

这样我不好确定是哪个部分的文本编码问题。

@DYY-Studio
Copy link
Owner

DYY-Studio commented May 25, 2024

根据Unicode组织的映射表,U+E4C6属于一个Private Use Area,即用户自定义区
GBK编码标准中并没有定义这样的用户区。您是使用了一些有特殊字符映射的字体吗?

GB18030标准中提供了与Unicode对应的用户区域。
如果确认您的问题是由这个导致,以后这部分会全部改为GB18030解码。

image

@DYY-Studio DYY-Studio added the question Further information is requested label May 25, 2024
@tb114514
Copy link
Author

请在此工具旁叙述一下当发生这种情况时,谢谢。 请复制错误信息以便确认。

👉我不好意思打扰你们,这是部分文本编码问题。

这是整个过程:
正在尝试从字幕所在文件夹载入字体...
目录下没有字体

正在分析字幕: "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
loadMain()
File "D:\game\MKVToolNix\ASFMKV_py1.02-pre12E.py", line 2996, in loadMain
cFontSubset(font_info)
File "D:\game\MKVToolNix\ASFMKV_py1.02-pre12E.py", line 2639, in cFontSubset
newasspaths, newfont_name, mkvr = main(font_info2, media_ass[k],
File "D:\game\MKVToolNix\ASFMKV_py1.02-pre12E.py", line 2131, in main
newfont_name = assFontSubset(assfont, fo, font_info)
File "D:\game\MKVToolNix\ASFMKV_py1.02-pre12E.py", line 1337, in assFontSubset
gfs, gfs_uni, out_of_range = charExistCheck(s[0], s[1], s[2])
File "D:\game\MKVToolNix\ASFMKV_py1.02-pre12E.py", line 1273, in charExistCheck
dec = int(''.join([hex(h).lstrip('0x') for h in c.encode(tcoding)]), 16)
UnicodeEncodeError: 'gbk' codec can't encode character '\ue4c6' in position 0: illegal multibyte sequence
这是字幕文件:(原文件为ass格式github不让传)
27.txt

@tb114514
Copy link
Author

请提供一下使用的文件并叙述一下发生时的操作过程,谢谢。 请把报错信息进行完整复制以便确认。

这样我不好确定是哪个部分的文本编码问题。

过程是:打开脚本选择"[B] 字体子集化 & MKV封装"-"[B] 子集化并封装"然后输入文件位置回车报错

@DYY-Studio
Copy link
Owner

DYY-Studio commented May 25, 2024

好的,已检查这一步中出错时的字体创艺简中圆
首先它的CMAP表标识为GBK而非标准的UnicodeGBK字符集并没有U+E4C6对应的用户自定义区

其次,通过FontCreator检查,创艺简中圆中也没有定义U+E4C6

这意味着这一步的出错极有可能是您字幕文本的问题。

请您重新确认您的字幕是否有文本问题,
已经确认发生问题的字符位于字幕0:00:52.22,0:00:56.12

关于这一点神乐你倒是有一辈子都是吊儿郎当的面相啊

关于这一点神乐你倒是有一辈子都是吊儿郎当的面相啊中间夹着字符U+E4C6

这个字符您真的需要吗?是否是输入或者拷贝错误导致了该字符的出现?

@tb114514
Copy link
Author

好的,已检查这一步中出错时的字体创艺简中圆 首先它的CMAP表标识为GBK而非标准的UnicodeGBK字符集并没有U+E4C6对应的用户自定义区

其次,通过FontCreator检查,创艺简中圆中也没有定义U+E4C6

这意味着这一步的出错极有可能是您字幕文本的问题。

请您重新确认您的字幕是否有文本问题, 已经确认发生问题的字符位于字幕0:00:52.22,0:00:56.12

关于这一点神乐你倒是有一辈子都是吊儿郎当的面相啊

关于这一点神乐你倒是有一辈子都是吊儿郎当的面相啊中间夹着字符U+E4C6

这个字符您真的需要吗?是否是输入或者拷贝错误导致了该字符的出现?

倒是不需要,你可以告诉我找出这种违规字符的方法吗?

@DYY-Studio
Copy link
Owner

DYY-Studio commented May 25, 2024

最简单的就是用可以将这些非标准Unicode字符显示为一个框框或者问号的查看器,进行人工检查
如:Windows记事本(我用的是Win11)、VS Code、甚至放到浏览器里等进行一遍浏览,人工检查一下。

由于这种字符显示得比较明显,应该还是很容易发现的。
似乎Aegisub会自动忽略这种字符?我导入没看见。

比较复杂的是使用正则表达式等对这些区域进行搜索

就这次的问题来说,您可以使用
[\uE000-\uF8FF]
进行正则表达式搜索

E000~F8FF就是这次字符所在的用户自定义区,一个一般不会设置字符的区域

您还可以根据报错信息 encode character '\ue4c6',转写为正则表达式[\ue4c6]进行搜索

@tb114514
Copy link
Author

好的感谢

@DYY-Studio
Copy link
Owner

U+E4C6是不是被你们当成大空格用了x
换成U+3000(日语全角空格) 或者U+0020(一般半角空格) 就行

@DYY-Studio DYY-Studio removed the question Further information is requested label May 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants