【问题标题】:File encoding from English text to UTF-8从英文文本到 UTF-8 的文件编码
【发布时间】:2012-05-01 07:20:15
【问题描述】:

如何在 Python 中将带有 CRLF 行终止符的非 ISO 扩展 ASCII 英文文本转换为 utf-8

【问题讨论】:

    标签: python


    【解决方案1】:

    扩展Jishiyu的答案,您可以使用uchardet 来识别字符集。例如

    iconv -f `uchardet a_strange_file.txt` -t UTF-8 -o the_output_file.txt a_strange_file.txt
    

    虽然这在 python 中不起作用。

    【讨论】:

      【解决方案2】:

      我认为linux命令unix2dos、dos2unix、iconv会有所帮助。

      这样的

      iconv -f latin-1 -t UTF-8 latin.txt >utf8.txt

      【讨论】:

      • 但是我需要一个能自动转换成指定格式的python包。
      【解决方案3】:

      如果您获得输入文件的原始字节流,则可以将decode 发送到utf-8。请参阅this blog post 和一些 Python 3 示例。

      【讨论】:

        【解决方案4】:

        我使用enca 库创建了一个自动化的conversion script, 我在我的 NAS 上使用它来将字幕转换为 UTF-8,但它可以用于任何自动转换

        随意使用:)

        编辑:

        #!/bin/bash
        LANGUAGE=czech
        TO=utf8
        CONVERT="enca -L $LANGUAGE -x $TO"
        
        # Find and onvert
        find ./ -type f -name "*.srt" | while read fn; do
          IS_TARGET=`enca "${fn}" | egrep -ow -m 1 'UTF-8|Unrecognized|KOI8-CS2|7bit ASCII|UCS-2|Macintosh Central European'`
        
            if [ "$IS_TARGET" != "UTF-8" ] &&
               [ "$IS_TARGET" != "UCS-2" ] &&
               [ "$IS_TARGET" != "Macintosh Central European" ] &&
               [ "$IS_TARGET" != "Unrecognized" ] &&
               [ "$IS_TARGET" != "7bit ASCII" ] &&
               [ "$IS_TARGET" != "KOI8-CS2" ]; then
        
                echo "${fn} ---- Will be converted!"
            # optional backup of original srt
                # cp "${fn}" "${fn}.bak"
                $CONVERT "${fn}"
            fi  
        
        done
        

        【讨论】:

        • 您可能应该在答案中包含源代码,而不是仅仅链接到它。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-01
        • 1970-01-01
        • 2015-08-13
        • 1970-01-01
        相关资源
        最近更新 更多