我正在使用
在python 2.7中读取字幕文件(在UCS-2中编码)f = 'filename.ssa'
with open(f, "r") as fl:
allLines = fl.readlines()
当它到达这一行时
对话:0,0:02:25.54,0:02:28.40,默认,, 0000,0000,0000 ,,模木さん,手筈通り,火口にレシーバーを
它实际上只读取此内容,然后停止。
对话:0,0:02:25.54,0:02:28.40,默认,0000,0000,0000 ,,模木さん,手筈
如果我删除了通字符,它会继续并到达
对话:0,0:05:41.28,0:05:42.77,默认,0000,0000,0000 ,, {\ fs30}计画通り...
但同样,它只读取并停止:
Dialogue:0,0:05:41.28,0:05:42.77,Default ,, 0000,0000,0000 ,, {\ fs30}计画
同样,通字符会将读取停止,就好像它是文件的结尾一样。没有错误被抛出
如果我首先将文件编码为UTF-8,它可以工作,但我不想这样做。任何人都可以解释为什么在UCS-2中这个通字符会停止阅读吗?如果我将python编译为带有py2exe的exe,它似乎也有效。我正在日蚀中发展。这毫无意义。
答案 0 :(得分:3)
"通"在UCS-2中编码的是0x1a 0x90。在DOS文件中,0x1a也被认为是EOF字符(" ^ Z")。考虑通过codecs.open()
以二进制模式打开文件。