文件编码从英文文本到UTF-8

时间:2012-05-01 07:20:15

标签: python

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

4 个答案:

答案 0 :(得分:1)

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

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

虽然这不能在python中完成这项工作。

答案 1 :(得分:0)

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

  

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

答案 2 :(得分:0)

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

enter image description here

答案 3 :(得分:0)

我使用conversion script库创建了自动enca, 我在我的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