如何把 MDX 格式词典转换成 MOBI 格式的 Kindle 字典

延伸阅读

给这篇文章写一条留言

提示:带 * 标记的是必填项。您填写的邮箱地址将会被保密。首次留言将会在通过人工审核后显示。如果是提出问题,请务必提供尽可能多信息,这有助于他人更好地理解你所提出的问题。

小伙伴们写下了 102 条留言

  1. 您好,运行了c:\python27\python.exe tab2opf.py -utf oa8.txt之后出现下列错误,请问有什么办法解决。
    *
    100鍗冨厠
    10鏈
    11涓栫邯鍒?8涓栫邯鐨勫▉灏兼柉鍏卞拰鍥絋raceback (most recent call last):
    File “tab2opf.py”, line 254, in
    print dt
    IOError: [Errno 0] Error

        • 这是由于某些字符的编码问题导致的。有两种解决方法,一种是用代码编辑器编辑 tab2opf.py 文件,找到 254 行,将 print dt 改为 print dt.decode('utf-8');另一种是直接删除 print dt 这一行,如果你不需要在命令提示符显示转换过程的话。

          • 谢谢解答,再请教下”代码编辑器”具体指什么软件呢?我用手头一个文本编辑器editplus打开,找不到你说的内容

  2. 花了一下午时间研究了下,搞出来一部词典,但是放到kindle里发现词典名是乱码,勾选词语之后也无法进行查询,不知道是什么原因。把词典文件用previewer打开后是可以看到内容的,请教是什么原因

            • 我用你发给我的 MDX 文件按照本文的步骤操作了一遍,得到的字典是正常可用的。

              然后我又回顾了一下转换过程,只有一个地方需要注意,那就是在使用脚本 tab2opf.py 的时候一定要添加参数 -utf,否则生成的字典不可用。

              我已经通过邮件把转换后的字典文件的下载链接发给了你,可以测试一下。

  3. 执行完第三步后,这时得到了一个OPF和几个HTML。结果发现坑爹的一幕出现了,对HTML添加CSS效果的时候发现,margin-right是无效的,甚至margin-left也只是在转成mobi后成为了一个blockquote标签。MOBI本身不支持margin…..迷了。但是kindle官方发布的文档里面显示了margin是支持的,可是用kindlegen生成的也是mobi,仍然不支持,陷入了一个谜一般的循环??站长知道这个吗?求解答?也许azw或者azw3支持margin,但是问题是怎么把opf和几个html生成azw或azw3呢??

    • 刚刚查了一下,没戏了。kindlegen不能对字典不能生成KF8标准的格式,所以无解。

      • 如果在 OPF 文件中指定了字典类型元数据,KindleGen 在自动转换时自动降级成 mobi7 格式,这种老式格式不支持 CSS 样式。

        字典主要用来查词用,查询的内容也只会在查询框里显示,也无法应用样式。如果想要有限更改某些外观,比如加粗、加大字号,可以尝试用 HTML 原生的一些古旧标签,比如 <b>、<font> 标签来应用这些样式。

        如果只是想当做纯粹的电子书阅读,可以不在 OPF 文件中添加指定字典类型的元数据。

        • 感谢站长的解答,确实如此,而且看起来亚马逊似乎并没有为字典提供KF8支持的打算,因为早在2013年就有人提过这个问题了…..

  4. 你好,我用大辞海的mdx做kindle词典,做到最后一步,命令提示符提示很多条重复的信息,如:Error(core):Cannot concatennate strings.Incoherent encodings. 再如:Warning(index build ):Unsuported Html entity or impossible to map the entity to the current encoding.等提示,没有生成文件,

  5. 输出后没有opf文件
    (just) for the record
    (just) in case ( 鈥?)Traceback (most recent call last):
    File “tab2opf.py”, line 254, in
    print dt
    IOError: [Errno 0] Error
    最后的输出

    • “”” % (dt, dtstrip, dd))
      print dt
      i += 1

      to.write(“””
      报错这里又问题

      • 尝试把 print dt这一行注释掉,你会发现程序执行速度飙升,也会避免一些奇怪的错误。本人亲测。

  6. 打开“命令提示符”,并用 cd 命令定位到“oa8”目录下,这一步怎么操作啊,可以详细一点吗

    • 就是在命令提示符中输入命令 cd 后面跟上 oa8 的路径。给你说个小技巧,在命令提示符上输入 cd 加空格,然后直接用书把 oa8 拖放到命令提示符上,这样就不用手动输入路径了。

  7. All Hallows鈥?EveTraceback (most recent call last):
    File “tab2opf.py”, line 254, in
    print dt
    IOError: [Errno 0] Error

    运行
    c:\python27\python.exe tab2opf.py -utf oa8.txt
    后出现报错 应该怎么办?

      • 是的,后来我换成牛津词典,成功了,但是为什么在转换之前那个词典到最后生成mobi的时候,软件崩溃呢,试了三次了

        • 这个情况以前遇到过,有时候重试几次可能会成功,有时就不行,尤其是文件较大的时候,这可能和软件有关系。

  8. 我这里有个葡英词典源文件,希望能转换成Kindle词典,并且能够通过变位动词查动词原形及其释义。
    求大神帮忙。

  9. 站长大大,第3步出现这个问题怎么办?
    下面是cmd里输入tab2opf.py -utf oa8.txt 后的提示
    C:\Users\Administrator\Desktop\oa8>tab2opf.py -utf oa8.txt
    File “C:\Users\Administrator\Desktop\oa8\tab2opf.py”, line 199
    print “tab2opf (Stardict->MobiPocket)”
    ^
    SyntaxError: invalid syntax

    好像有什么语法错误的

  10. 命令运行完毕之后,在“oa8”文件夹下会没有出现一个 .opf 文件和几个 .html 文件,

    • 建议把问题描述的更详尽一些。比如运行命令之后没有出现这些文件,出现了什么?或者有什么具体的提示信息?

  11. 提示 unicode decode error: utf8 can’t decode bye 0xe9 in position 1: invalid continuation byte

  12. 站长好,在转换汉语词典是已将三处的language改为zh, 为何中文词条是乱码呢?谢谢