我尝试转换的 .dsl 格式的字典文件有一些特殊之处。它本质上是一个带有字典对的文本文件。我使用的词典软件是GoldenDict。它需要 UTF-16 字典才能正确呈现。
\n我拥有的所有词典都是 UTF-16LE 格式。然而,有一个很突出。它具有 iso-8859-1 编码。当我用 vim 打开条目时,它看起来像这样:
\nabandonarse\n [m2][c crimson][b]Sin\xc3\xb3nimos[/b][/c][/m]\n [m2][i][c green]verbo[/c][/i][/m]\n [m1][trn][b]desanimarse:[/b] <<desanimarse>>, <<abatirse>>, <<tumbarse>>, <<plegarse>>, <<entregarse>>, <<desligarse>>[/trn][/m]\n
Run Code Online (Sandbox Code Playgroud)\n我必须将其转换为 UTF-16LE,因为 Goldendict 呈现一些西里尔字符而不是西班牙重音字符。\n然后我尝试:
\niconv -f iso-8859-1 -t utf-16le dictionary.dsl -o test.dsl\n
Run Code Online (Sandbox Code Playgroud)\n新的 test.dsl 字典由 Goldendict 正确呈现,但是我可以看到一些我想摆脱的奇怪的东西。首先,刚刚转换的文件的编码无法被识别,因为它通常与其他字典一样:
\n aleksandr@desktop:~/windoc/Dic/Es extra/dictionary.dsl> file dictionary.dsl\ndictionary: data\n
Run Code Online (Sandbox Code Playgroud)\n当我用 vim 打开文件 test.dsl 时,里面的每个字符都添加了 ^@ 。以下是同一条目的示例:
\n ^@<^@<^@e^@n^@t^@r^@e^@g^@a^@r^@s^@e^@>^@>^@,^@ ^@<^@<^@d^@e^@s^@l^@i^@g^@a^@r^@s^@e^@>^@>^@[^@/^@t^@r^@n^@]^@[^@/^@m^@]^@\n^@ ^@[^@m^@2^@]^@[^@c^@ ^@c^@r^@i^@m^@s^@o^@n^@]^@[^@b^@]^@A^@n^@t^@\xc3\xb3^@n^@i^@m^@o^@s^@[^@/^@b^@]^@[^@/^@c^@]^@[^@/^@m^@]^@\n^@ ^@[^@m^@2^@]^@[^@i^@]^@[^@c^@ ^@g^@r^@e^@e^@n^@]^@v^@e^@r^@b^@o^@[^@/^@c^@]^@[^@/^@i^@]^@[^@/^@m^@]^@\n
Run Code Online (Sandbox Code Playgroud)\n我尝试在 vim 中删除这个字符
\n%s/<Ctrl-V><Ctrl-J>//g\n
Run Code Online (Sandbox Code Playgroud)\n但是,然后我保存文件,它的编码再次为 iso-8859-1。\n我希望显示的文件不带 ^@ 字符,因为我可能需要手动编辑字典中的一些标题。
\n