精华内容
下载资源
问答
  • python utf-8编码转换中文
    千次阅读
    2020-11-21 02:26:32

    因为想更改数据库里内容。

    而这个内容,没有通过WEB开放编辑显示,

    且放在里面的中文为UTF-8编码过的。

    所以,想快速显示和更新里面的内容,

    想到了这个方法。

    #coding=utf-8

    org_utf8_str= "\u65f6\u4e0d\u53ef\u5931\uff0c\u65f6\u4e0d\u518d\u6765\uff01"dst_gbk_str= ""org_gbk_str= ‘时不可失,时不再来!‘dst_utf8_str= ""dst_gbk_str= org_utf8_str.split(‘\\u‘)for item inorg_gbk_str:

    dst_utf8_str+= item.encode(‘unicode_escape‘).decode(‘utf-8‘)print(dst_gbk_str)print(dst_utf8_str)

    输出内容:

    [‘时不可失,时不再来!‘]

    \u65f6\u4e0d\u53ef\u5931\uff0c\u65f6\u4e0d\u518d\u6765\uff01

    原文地址:https://www.cnblogs.com/aguncn/p/11146129.html

    更多相关内容
  • utf-8编码转换工具.zip

    2019-10-31 21:05:52
    该程序支持.c .h .cpp .hpp .bat .java等6种格式的文件编码转换,如果需要添加其他格式的文件,直接修改suffix的条件判断处的语句即可,压缩包中提供exe程序和python写的源码
  • 例如,txt文件由UTF-16LE转为UTF-8…… 问题重现:往往利用python处理数据时,都会遇到文件编码格式不对,那么如何批量转换呢,下面直接上代码! 实例:整个文件夹的txt文件由UTF-16LE转为UTF-8 # coding utf-8 ...
  • 主要介绍了使用python批量转换文件编码UTF-8的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • PythonUTF-8编码转换成GBK编码

    千次阅读 2020-12-17 11:03:33
    #UTF-8转换成GBK编码#temp#decode#encode#原理就是把UTF-8转换成万国码,再给万国码进行编码转换成GBK,在python 2.x里面这么用"""给变量temp赋值等于’李杰‘是UTF-8编码!变量temp_unicode的赋值等于temp变量的...

    #UTF-8转换成GBK编码

    #temp

    #decode

    #encode

    #原理就是把UTF-8转换成万国码,再给万国码进行编码转换成GBK,在python 2.x里面这么用

    """

    给变量temp赋值等于’李杰‘是UTF-8编码!

    变量temp_unicode的赋值等于temp变量的解码,指定的temp原来的编码是UTF-8

    拿到temp_unicode变量,进行编码指定为gbk,得到的就是temp_gbk的赋值

    temp_gbk就是编成的GBK内容,print(temp_gbk)就是以gbk的方式显示之前UTF-8编码的’张三‘

    """

    temp = '张三'# UTF-8

    #解码,需要指定原来是什么编码

    temp_unicode =temp.decode('utf-8')

    #拿unicode进行编码

    temp_gbk = temp_unicode.encode('gbk')

    #再打印的时候想以GBK的方式显示,windows的终端刚好是GBK的编码,两者匹配

    #temp_gbk就是编成的GBK内容,print(temp_gbk)就是以gbk的方式显示出来了

    print(temp_gbk)

    #/usr/bin/env python

    # -*- coding:utf-8 -*-

    #py2

    """

    windows终端需要GBK ,只要给他unicode编码,它可以自动转换为合适的编码类型

    所以用temp_gbk编码为gbk的那一步其实可以不用写,windows终端会自动进行编码!

    知道就行,写的时候还是要写完整,因为在py3里面没有unicode类型,就搞不定了!

    """

    temp ="张三" # utf-8

    #解码,需要指定原来是什么编码

    temp_unicode =temp.decode('utf-8')

    print(temp_unicode)

    #temp_gbk = temp_unicode.encode("gbk")

    #print(temp_gbk)

    以上就是UTF-8编码转换成GBK编码,全部解释,希望可以帮到大家,或者可以利用黑洞HTTP帮助。

    相关文章内容简介

    1

    Python:UTF-8编码转换成GBK编码

    #UTF-8转换成GBK编码#temp#decode#encode#原理就是把UTF-8转换成万国码,再给万国码进行编码转换成GBK,在python 2.x里面这么用"""给变量temp赋值等于’李杰‘是UTF-8编码!变量temp_unicode的赋值等于temp变量的解码,指定的temp原来的编码是UTF-8拿到temp_unicode变量,进行编码指定为gbk,得到的就是temp_gbk的赋值temp_gbk就是编成的GBK内容,print(temp_gbk)就是以gbk的方式显示之前UTF-8编码的’张三‘"""temp = '张三'# UTF-8#解码,需要指定原来是什么编码temp_unicode =temp.decode('utf-8')#拿unicode进行编码temp_gbk =

    [阅读全文]

    展开全文
  • 本来一开始的思路还是比较清晰,觉得也比较简单,天真的认为用GBK的方式读取出文件内容,然后UTF8写入就好了,可是在实际的操作中我发现我就是太天真了,出现了大量的问题,比如说: 怎么查看文件的编码方式 好吧我...
  • 一、需求描述 在我之前的博客: 【我的Android进阶之旅】使用TextAnalysisTool来快速提高你分析文本日志...编码格式为 UTF-8编码 我们使用快捷键 Ctrl+A 全选日志内容,选择【编码】–>【使用 UTF-8 BOM编码】,将

    一、需求描述

    在我之前的博客:
    【我的Android进阶之旅】使用TextAnalysisTool来快速提高你分析文本日志的效率
    中有介绍下面一个关于中文无法显示的问题,如下所示:


    有时候,中文无法正常显示,如下所示都是乱码

    在这里插入图片描述
    这个时候,我们需要借助下 NotePad++ 工具,对整个日志文件进行转码,如下所示

    我们发现,此文件用NotePad++ 打开,可以直接显示中文,
    编码格式为 UTF-8编码

    在这里插入图片描述

    我们使用快捷键 Ctrl+A 全选日志内容,选择【编码】–>【使用 UTF-8 BOM编码】,将日志内容切换编码,然后保存。

    在这里插入图片描述

    现在我们切换了编码为【UTF-8 BOM】之后,重新用TextAnalysisTool工具打开这份日志就可以正常显示中文了

    在这里插入图片描述


    上面的方法,我们通过使用NotePad++ 工具,来对整个日志文件进行转码。然后再进行查看,这样的步骤有点繁琐。有时候需要分析多份日志的时候就会显得很恶心。

    所以在想,有没有其他的方式将utf-8编码转成utf-8 BOM编码呢?

    二、实现需求:将UTF-8编码转成UTF-8 BOM编码

    我们可以使用python来实现这个需求。

    2.1 了解下UTF-8 and UTF-8 BOM(Byte Order Mark)的区别

    大家可以通过以下几个链接了解一下UTF-8 and UTF-8 BOM(Byte Order Mark)的区别。

    结论:

    UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM。
    所以不含 BOM 的 UTF-8 才是标准形式,在 UTF-8 文件中放置 BOM 主要是微软的习惯(顺便提一下:把带有 BOM 的小端序 UTF-16 称作「Unicode」而又不详细说明,这也是微软的习惯)。

    什么是BOM

    BOM(byte-order mark),即字节顺序标记,它是插入到以UTF-8、UTF16或UTF-32编码Unicode文件开头的特殊标记,用来识别Unicode文件的编码类型。

    对于UTF-8来说,BOM并不是必须的,因为BOM用来标记多字节编码文件的编码类型和字节顺序(big-endian或little-endian)。

    在绝大多数编辑器中都看不到BOM字符,因为它们能理解Unicode,去掉了读取器看不到的题头信息。若要查看某个Unicode文件是否以BOM开头,可以使用十六进制编辑器。下表列出了不同编码所对应的BOM。

    BOM Encoding
    EF BB BF UTF-8
    FE FF UTF-16 (big-endian)
    FF FE UTF-16 (little-endian)
    00 00 FE FF UTF-32 (big-endian)
    FF FE 00 00 UTF-32 (little-endian)

    UTF-8以字节为编码单元因此不需要 BOM 来表明字节顺序,但可以用 BOM 来表明编码方式。字符 “Zero Width No-Break Space” 的 UTF-8 编码是 EF BB BF。所以如果接收者收到以 EF BB BF 开头的字节流,就知道这是 UTF-8编码了。

    在这里插入图片描述

    因此UTF-8编码的字符串开头处的三个bytes 0xef,0xbb,0xbf就称为UTF-8 BOM头。

    BOM的来历

    为了识别 Unicode 文件,Microsoft 建议所有的 Unicode 文件应该以 ZERO WIDTH NOBREAK SPACE(U+FEFF)字符开头。这作为一个“特征符”或“字节顺序标记(byte-order mark,BOM)”来识别文件中使用的编码和字节顺序。

    Linux/UNIX 并没有使用 BOM,因为它会破坏现有的 ASCII 文件的语法约定。

    带BOM和不带BOM的区别

    「UTF-8」和「带 BOM 的 UTF-8」的区别就是有没有 BOM。即文件开头有没有 U+FEFF,也就是说有没有这个标记。

    在这里插入图片描述
    但内容都一样 ,为什么相差了3个字节呢 ? 如下图 。

    在这里插入图片描述
    多出来的 ef bb bf 就是上面相差三个字节的原因 。

    BOM——Byte Order Mark,就是字节序标记

    bom是为utf-16和utf-32准备的,用于标记字节顺序。微软在utf-8中使用bom是因为这样可以把UTF-8和ASCII等编码区分开来,但这样的文件在windows之外的操作系统里会带来问题。

    带还是不带?

    如果你的编程平台需要跨平台编译,比如,会在linux平台上编译,而不是只在windows上运行,建议不带BOM,unicode标准就是不带,带BOM毕竟那是微软的那一套,带了会出现很大的问题。反之,如果你的程序只在windows平台上编译出windows程序,这个可有可无。
    注意:这里所说的带还是不带,指的是:源码字符集(the source character set)-源码文件是使用何种编码保存的;

    现在linux平台下的GCC 4.6及以上的版本已经可以支持带BOM的源码了!!!!!
    所以之前出现的问题也可以不用冲突,带或者不带,以后就不会成为一个问题。

    2.2 实现需求

    参考链接: 【Adding BOM (unicode signature) while saving file in python】

    import codecs
    # https://stackoverflow.com/questions/5202648/adding-bom-unicode-signature-while-saving-file-in-python
    
    
    """ 给指定文件,添加BOM标记
        参数:
            file: 文件
            bom: BOM标记
    """
    def add_bom(file, bom: bytes):
        with open(file, 'r+b') as f:
            org_contents = f.read()
            f.seek(0)
            f.write(bom + org_contents)
    
    # 定义一个测试文件,名为test.log
    file = 'test.log'
    
    # 打开 测试文件,使用utf-8编码写入一段中英文混杂的内容
    with open(file, 'w', encoding='utf-8') as f:  # without BOM
        f.write('欧阳鹏 博客地址:https://blog.csdn.net/ouyang_peng')
    
    # 加入BOM标记
    #add_bom(file, codecs.BOM_UTF8)
    
    # 打开测试文件,打印文件内容
    with open(file, 'rb') as f:
        print(f.read())
    

    在这里插入图片描述

    总共有4个区域:

    • 区域1
      定义 add_bom方法,给指定文件,添加BOM标记
    • 区域2
      定义一个测试文件,名为test.log,打开 测试文件,使用utf-8编码写入一段中英文混杂的内容
    • 区域3
      给测试文件,加入BOM标记
    • 区域4
      打印测试文件的内容

    2.2.1 测试写入utf-8内容并读取打印

    import codecs
    # https://stackoverflow.com/questions/5202648/adding-bom-unicode-signature-while-saving-file-in-python
    
    
    """ 给指定文件,添加BOM标记
        参数:
            file: 文件
            bom: BOM标记
    """
    def add_bom(file, bom: bytes):
        with open(file, 'r+b') as f:
            org_contents = f.read()
            f.seek(0)
            f.write(bom + org_contents)
    
    # 定义一个测试文件,名为test.log
    file = 'test.log'
    
    # 打开 测试文件,使用utf-8编码写入一段中英文混杂的内容
    with open(file, 'w', encoding='utf-8') as f:  # without BOM
        f.write('欧阳鹏 博客地址:https://blog.csdn.net/ouyang_peng')
    
    # 加入BOM标记
    #add_bom(file, codecs.BOM_UTF8)
    
    # 打开测试文件,打印文件内容
    with open(file, 'rb') as f:
        print(f.read())
    

    运行程序,如下所示:

    [Running] python -u "c:\Users\000\Desktop\add_utf8_bom.py"
    b'\xe6\xac\xa7\xe9\x98\xb3\xe9\xb9\x8f \xe5\x8d\x9a\xe5\xae\xa2\xe5\x9c\xb0\xe5\x9d\x80\xef\xbc\x9ahttps://blog.csdn.net/ouyang_peng'
    
    [Done] exited with code=0 in 1.038 seconds
    
    

    在这里插入图片描述

    使用 TextAnalysisTool 工具打开,乱码
    在这里插入图片描述

    2.2.2 测试写入utf-8内容,并给文件加入BOM标记,然后读取打印

    import codecs
    # https://stackoverflow.com/questions/5202648/adding-bom-unicode-signature-while-saving-file-in-python
    
    
    """ 给指定文件,添加BOM标记
        参数:
            file: 文件
            bom: BOM标记
    """
    def add_bom(file, bom: bytes):
        with open(file, 'r+b') as f:
            org_contents = f.read()
            f.seek(0)
            f.write(bom + org_contents)
    
    # 定义一个测试文件,名为test.log
    file = 'test.log'
    
    # 打开 测试文件,使用utf-8编码写入一段中英文混杂的内容
    with open(file, 'w', encoding='utf-8') as f:  # without BOM
        f.write('欧阳鹏 博客地址:https://blog.csdn.net/ouyang_peng')
    
    # 加入BOM标记
    add_bom(file, codecs.BOM_UTF8)
    
    # 打开测试文件,打印文件内容
    with open(file, 'rb') as f:
        print(f.read())
    

    输出内容为:

    [Running] python -u "c:\Users\000\Desktop\add_utf8_bom.py"
    b'\xef\xbb\xbf\xe6\xac\xa7\xe9\x98\xb3\xe9\xb9\x8f \xe5\x8d\x9a\xe5\xae\xa2\xe5\x9c\xb0\xe5\x9d\x80\xef\xbc\x9ahttps://blog.csdn.net/ouyang_peng'
    
    [Done] exited with code=0 in 1.043 seconds
    

    在这里插入图片描述
    使用 TextAnalysisTool 工具打开,不会乱码了!
    在这里插入图片描述

    2.2.2 对比输出内容

    [Running] python -u "c:\Users\000\Desktop\add_utf8_bom.py"
    b'\xe6\xac\xa7\xe9\x98\xb3\xe9\xb9\x8f \xe5\x8d\x9a\xe5\xae\xa2\xe5\x9c\xb0\xe5\x9d\x80\xef\xbc\x9ahttps://blog.csdn.net/ouyang_peng'
    
    [Done] exited with code=0 in 1.038 seconds
    
    [Running] python -u "c:\Users\000\Desktop\add_utf8_bom.py"
    b'\xef\xbb\xbf\xe6\xac\xa7\xe9\x98\xb3\xe9\xb9\x8f \xe5\x8d\x9a\xe5\xae\xa2\xe5\x9c\xb0\xe5\x9d\x80\xef\xbc\x9ahttps://blog.csdn.net/ouyang_peng'
    
    [Done] exited with code=0 in 1.043 seconds
    

    在这里插入图片描述

    对比 UTF-8 和 UTF-8 BOM的内容,可以发现,多了\xef\xbb\xbf三个字节,因此UTF-8编码的字符串开头处的三个bytes 0xef,0xbb,0xbf就称为UTF-8 BOM头。

    三、扩展

    3.1 扩展为可实际使用的脚本

    上面的demo我们测试完毕之后,我们扩展一下,使之扩展为可实际使用的脚本。

    add_utf8_bom.py 的代码如下,

    import sys
    import os
    import glob
    import codecs
    
    """ 给指定文件,添加BOM标记
        参数:
            file: 文件
            bom: BOM标记
    """
    def add_bom(file, bom: bytes):
        print("now,add_bom for file :[%s] ,with bom:[%s]" %(file,bom))
        with open(file, 'r+b') as f:
            org_contents = f.read()
            f.seek(0)
            f.write(bom + org_contents)
    
    """ 根据给定的不同参数,给指定文件,添加BOM标记
        参数:
          args  传入进来的参数。
          
          如果参数只有一个,则区分是目录还是文件,
                如果是文件夹,则遍历文件夹中的.log日志文件,然后给每个.log日志文件添加BOM标记
                如果是文件则直接添加BOM标记。
          
          如果不传参数,则直接遍历当前目前下的所有.log日志文件  
    """
    def main(args):
        if 1 == len(args):
            if os.path.isdir(args[0]):
                filelist = glob.glob(args[0] + "/*.log")
                for filepath in filelist:
                    add_bom(filepath, codecs.BOM_UTF8)
            else:
                add_bom(args[0], codecs.BOM_UTF8)
        else:
            filelist = glob.glob("*.log")
            for filepath in filelist:
                add_bom(filepath, codecs.BOM_UTF8)
    
    if __name__ == "__main__":
        main(sys.argv[1:])
    
    

    我们来做一下测试,我们准备一个目录 C:\Users\000\Desktop\test_bom,放好写好的脚本,以及4个utf-8格式的文件,如下所示:

    在这里插入图片描述
    文件打开是乱码的

    在这里插入图片描述

    3.1.1 传入一个指定文件路径

    如下所示:指定传入一个指定的文件名。文件名可以传入相对路径或者绝对路径。

    • 相对路径
    PS C:\Users\000> cd "c:\Users\000\Desktop\test_bom"
    PS C:\Users\000\Desktop\test_bom> python -u "c:\Users\000\Desktop\test_bom\add_utf8_bom.py" "test_utf-8.log"
    now,add_bom for file :[test_utf-8.log] ,with bom:[b'\xef\xbb\xbf']
    PS C:\Users\000\Desktop\test_bom> 
    

    在这里插入图片描述

    • 绝对路径
    PS C:\Users\000\Desktop\test_bom> python -u "c:\Users\000\Desktop\test_bom\add_utf8_bom.py" "C:\Users\000\Desktop\test_bom\test_utf-8.log" 
    now,add_bom for file :[C:\Users\000\Desktop\test_bom\test_utf-8.log] ,with bom:[b'\xef\xbb\xbf']
    PS C:\Users\000\Desktop\test_bom>
    

    在这里插入图片描述
    两种方式都可以识别,然后可以看到日志打印,添加了BOM标记头。

    我们可以看到C:\Users\000\Desktop\test_bom\test_utf-8.log的时间和其他的文件不同,以被修改。
    在这里插入图片描述
    打开文件内容查看,不乱码!
    在这里插入图片描述

    3.1.2 传入一个指定文件夹路径

    传入一个指定文件夹路径,如下所示,传入文件夹路径为:C:\Users\000\Desktop\test_bom\

    PS C:\Users\000\Desktop\test_bom> python -u "c:\Users\000\Desktop\test_bom\add_utf8_bom.py" "C:\Users\000\Desktop\test_bom\"
    now,add_bom for file :[C:\Users\000\Desktop\test_bom\test_utf-8  (1).log] ,with bom:[b'\xef\xbb\xbf']
    now,add_bom for file :[C:\Users\000\Desktop\test_bom\test_utf-8  (2).log] ,with bom:[b'\xef\xbb\xbf']
    now,add_bom for file :[C:\Users\000\Desktop\test_bom\test_utf-8  (3).log] ,with bom:[b'\xef\xbb\xbf']
    now,add_bom for file :[C:\Users\000\Desktop\test_bom\test_utf-8.log] ,with bom:[b'\xef\xbb\xbf']
    PS C:\Users\000\Desktop\test_bom>
    

    在这里插入图片描述

    我们可以看到该文件夹下所有的log日志文件都被修改。

    打开该文件夹下所有的log日志文件,查看下内容不乱码!
    在这里插入图片描述

    3.1.3 不传入指定路径

    不传入指定路径,则会遍历当前路径下所有的.log日志文件。

    PS C:\Users\000\Desktop\test_bom> python -u "c:\Users\000\Desktop\test_bom\add_utf8_bom.py"
    now,add_bom for file :[test_utf-8  (1).log] ,with bom:[b'\xef\xbb\xbf']
    now,add_bom for file :[test_utf-8  (2).log] ,with bom:[b'\xef\xbb\xbf']
    now,add_bom for file :[test_utf-8  (3).log] ,with bom:[b'\xef\xbb\xbf']
    now,add_bom for file :[test_utf-8.log] ,with bom:[b'\xef\xbb\xbf']
    PS C:\Users\000\Desktop\test_bom>
    

    在这里插入图片描述
    和传入指定文件夹路径的效果类似。

    3.2 将Python脚本加入Windows右键菜单

    写一个工具直接鼠标右键一键可以转换UTF-8编码转换成UTF-8 BOM编码,方便我在windows电脑上使用TextAnalysisTool工具来分析日志。

    具体可以参考下面这个操作

    我们来看实际效果。

    3.2.1 先写一个批处理文件

    现在我们将这个命令封装成一个bat文件,这样我们以后就可以直接运行bat文件即可,不需要每次都敲命令了。

    比如我们封装为 add_utf_bom.bat 文件,放在C:\Windows目录下,内容如下

    在这里插入图片描述

    add_utf_bom.bat 文件源代码如下:

    C:\Python39\python.exe C:\Windows\add_utf8_bom.py %*
    
    
    • 第一个参数 C:\Python39\python.exe 表示要运行的python程序的路径,上面的python.exe文件在c:\Python39目录下,如下所示
      在这里插入图片描述

    如果你的python文件不是这个目录,改为你自己的python安装目录。

    • 第二个参数 C:\Windows\add_utf8_bom.py 表示添加BOM标记的python脚本路径

    3.2.2 先写一个注册表文件

    在这里插入图片描述

    add_utf_bom.reg文件的内容为:

    Windows Registry Editor Version 5.00
    [HKEY_CLASSES_ROOT\*\shell\add_utf_bom\command]
    @="add_utf_bom.bat \"%1\""
    

    然后双击该注册表,即可导入注册表。

    在这里插入图片描述
    点击 【是(Y)】,即可导入成功!

    在这里插入图片描述
    导入注册表成功之后,查询下注册表内容,如下所示:

    在这里插入图片描述

    3.2.3 测试鼠标右键add_utf_bom菜单

    在这里插入图片描述
    一闪而过,执行成功
    在这里插入图片描述

    在这里插入图片描述

    OK,整个需求完整实现,可以对指定的utf-8编码的文件,先使用鼠标右键菜单【add_utf_bom】实现添加BOM头的功能,然后再使用TextAnalysisTool工具来查看不乱码的日志文件!

    四、再次扩展功能:添加完BOM头之后,直接用TextAnalysisTool工具打开此文件

    4.1 待优化的现状

    上面的步骤做完之后,我们可以很方便的给文件进行转码,给UTF-8格式的文件加上BOM头,使之可以使用TextAnalysisTool工具打开此文件后不乱码。
    但是这样得进行两步骤

    1. 鼠标右键: 选择我们弄好的【add_utf_bom】菜单项,进行编码转换

    在这里插入图片描述
    2. 重新打开此文件
    在这里插入图片描述
    略显麻烦,因此我想把两个步骤合并为一个,当点击鼠标右键: 选择我们弄好的【add_utf_bom】菜单项,进行编码转换之后,直接使用TextAnalysisTool工具打开此文件。

    4.2 实现功能

    因此我们修改下python脚本即可。

    import sys
    import os
    import glob
    import codecs
    
    """ 给指定文件,添加BOM标记
        参数:
            file: 文件
            bom: BOM标记
    """
    def add_bom(file, bom: bytes):
        print("now,add_bom for file :[%s] ,with bom:[%s]" %(file,bom))
        with open(file, 'r+b') as f:
            org_contents = f.read()
            f.seek(0)
            f.write(bom + org_contents)
    
    """ 根据给定的不同参数,给指定文件,添加BOM标记
        参数:
          args  传入进来的参数。
          
          如果参数只有一个,则区分是目录还是文件,
                如果是文件夹,则遍历文件夹中的.log日志文件,然后给每个.log日志文件添加BOM标记
                如果是文件则直接添加BOM标记。
          
          如果不传参数,则直接遍历当前目前下的所有.log日志文件  
    """
    def main(args):
        if 1 == len(args):
            if os.path.isdir(args[0]):
                filelist = glob.glob(args[0] + "/*.log")
                for filepath in filelist:
                    add_bom(filepath, codecs.BOM_UTF8)
            else:
                add_bom(args[0], codecs.BOM_UTF8)
                # 如果是单独打开某个文件,肯定是鼠标右键进来的,或者直接指定要打开这个文件的
                # 那么加上BOM标记之后,直接使用TextAnalysisTool工具直接打开
                # TextAnalysisTool 工具安装的路径为: D:\TextAnalysisTool.NET\TextAnalysisTool.NET.exe
                # 所以直接打开此文件
                # TextAnalysisTool 安装目录为: D:\TextAnalysisTool.NET
                # TextAnalysisTool 程序名为: TextAnalysisTool.NET.exe
                # 要打开的文件为: args[0] 传进来的参数
                os.system('start "" /d "D:\TextAnalysisTool.NET" /wait "TextAnalysisTool.NET.exe" %s' %args[0])
        else:
            filelist = glob.glob("*.log")
            for filepath in filelist:
                add_bom(filepath, codecs.BOM_UTF8)
    
    if __name__ == "__main__":
        main(sys.argv[1:])
    
    

    添加了标红的一段代码
    在这里插入图片描述
    TextAnalysisTool 工具安装的路径为: D:\TextAnalysisTool.NET\TextAnalysisTool.NET.exe
    在这里插入图片描述
    添加的部分代码如下所示:

    # 如果是单独打开某个文件,肯定是鼠标右键进来的,或者直接指定要打开这个文件的
                # 那么加上BOM标记之后,直接使用TextAnalysisTool工具直接打开
                # TextAnalysisTool 工具安装的路径为: D:\TextAnalysisTool.NET\TextAnalysisTool.NET.exe
                # 所以直接打开此文件
                # TextAnalysisTool 安装目录为: D:\TextAnalysisTool.NET
                # TextAnalysisTool 程序名为: TextAnalysisTool.NET.exe
                # 要打开的文件为: args[0] 传进来的参数
                os.system('start "" /d "D:\TextAnalysisTool.NET" /wait "TextAnalysisTool.NET.exe" %s' %args[0])
    

    4.3 测试一键转码并打开功能

    在这里插入图片描述
    转码中
    在这里插入图片描述
    自动打开转码后的文件
    在这里插入图片描述
    恩,到此为止,这个工具用起来才得心应手!

    五、参考链接

    展开全文
  • 需求:将utf-8格式的文件转换成gbk格式的文件 实现代码如下: 复制代码 代码如下: def ReadFile(filePath,encoding=”utf-8″):  with codecs.open(filePath,”r”,encoding) as f:  return f.read()   ...
  • python3中utf-8编码如何转换

    千次阅读 2021-01-14 12:19:32
    那小编开始提问了,utf-8编码如何转换?有的小伙伴可能对这个词模模糊糊的有点印象。但是如果我们提到unicode编码大家就会觉得很熟悉。所以今天讲的是unicode编码里的utf-8,大家一起来试试两个不同编码的区别吧,...

    python中的编码之间可以相互转换,这个我们在之前的文章中有讲到。那小编开始提问了,utf-8编码如何转换?有的小伙伴可能对这个词模模糊糊的有点印象。但是如果我们提到unicode编码大家就会觉得很熟悉。所以今天讲的是unicode编码里的utf-8,大家一起来试试两个不同编码的区别吧,也许会有新的惊喜。

    utf-8编码将一个 unicode 字符编码成 1~6 个字节,常用的英文字母被编码成 1 个字节,汉字通常是 3 个字节,只有很生僻的字符才会被编码成 4~6 个字节。注意,从 unicode 到 utf-8 并不是直接的对应,而是通过一些算法和规则来转换的。

    来看一下具体编码例子吧:>>> list('中'.encode('utf-8'))

    [228, 184, 173]

    >>> list('a'.encode('utf-8'))

    [97]

    可以看出,utf-8 将汉字 ‘中’ 编码成了三个字节,将英文字母 ‘a’ 编码成了一个字节,且 utf-8 编码兼容 ASCII 编码。

    拓展:unicode 编码

    为每种语言制定一套编码方式实在是太蠢了!为什么不能把所有语言的所有字符一起编码呢?

    把所有语言统一到一套编码里,这套编码就是 unicode 编码。使用 unicode 编码,无论处理什么文本都不会出现乱码问题了。

    unicode 编码使用两个字节(16 位 bit)表示一个字符,比较偏僻的字符需要使用 4 个字节。

    但是新的问题又来了,如果一段纯英文文本,用 unicode 编码存储会比用 ASCII 编码多占用一倍空间!无论是存储还是传输都很浪费!

    今天对utf-8编码转换的讲解到这里就结束了,不知道小伙伴们有没有熟练掌握呀~小编看了一遍就会了,代码真的很简单。后续有新的类似拓展,小编也会及时更新出来。

    展开全文
  • pythonutf-8中文转换

    万次阅读 2022-05-19 11:30:52
    python3默认支持utf-8,因此对于\uXXXX这种格式的中文,可以直接转换,但经常爬虫抓取回来的中文是\\uXXXX格式,因此需要进行转换 s1='\u65f6\u4e0d\u53ef\u5931\uff0c\u65f6\u4e0d\u518d\u6765\uff01' print('s1=...
  • UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一...
  • 乱码原因:因为你的文件声明为utf-8,并且也应该是用utf-8编码保存的源文件。但是windows的本地默认编码是cp936,也就是gbk编码,所以在控制台直接打印utf-8的字符串当然是乱码了。解决方法:在控制台打印的地方用...
  • python2中如何将txt中的utf-8转换中文txt中的内容是这样的:('\xef\xbc\x8c\n', 30)('\xe7\x9a\x84\n', 12)('\xef\xbc\x81\n', 11)('\xe8\xbf\x98\n', 7)('\xe5\xbe\x88\n', 6)('\xe6\xb2\xa1\n', 6)('\xe5\xae\x...
  • 为什么需要本文,因为在对接某些很老的接口的时候,需要传递过去的是16进制的hex字符串,并且要求对传的字符串做编码,这里就介绍了utf-8 Unicode bytes 等等。 #英文使用utf-8 转换成16进制hex字符串的方法 newstr...
  • 最近帮伙计做了一个从网页抓取股票信息并把相应信息存入MySQL中的...程序中只要在开头写好#-*- coding: utf-8 -*-,并在设定连接字符串时候写清使用utf8就可以了conn=MySQLdb.connect(host=127.0.0.1,user=webdb,passwd
  • 怎么在Python里使用UTF-8编码

    千次阅读 2020-11-20 20:58:41
    展开全部概述在2113python代码即.py文件的头部声明即可解析5261py文件中的编码Python 默认脚本文件都是 ANSCII 编码的,当4102文件 中有非 ANSCII 编码范围内的字符的时候就要使用"编码指示"来修正一个 module的定义...
  • import os def convert(d): for f in os.listdir(d): full = os.path.join(d, f) if os.path.isfile(full): ... s = open(full, mode='r', encoding='utf-8-sig').read() open(full, mode='w', encoding='
  • python-latin1-to-utf8 将错误的 Latin-1 字符转换UTF-8 字符。 是对编码问题的全面描述和解释。 用法 $ python latin1-to-utf8.py Automática > Automática 相关项目
  • Python3中
  • 在使用python3 转换文件编码的时候,读到一个文件的时候,显示在read() 处出现UnicodeDecodeError。但是用notepad++打开显示的文件编码就是gb2312。后来看到这篇博客https://www.jianshu.com/p/9cb55b7173ae,gb...
  • 其次,存在字节类,它只是字节序列,通常表示存储在编码中的字符串(如utf-8或iso-8859-15).这对您意味着什么?据我了解,您想读写utf-8文件.让我们编写一个程序,用“?”字符替换所有“?”def main():# Let...
  • I have a string in UTF-8 format but not so sure how to convert this string to it's corresponding character literal. For example I have the string:My string is: 'Entre\xc3\xa9'Example one:This code:u'E...
  • 【转】怎么在Python里使用UTF-8编码

    千次阅读 2021-06-28 09:06:48
    在Mac OX上默认的编码UTF-8,但是在别的系统上,大部分是ASCII。 比如创建一个字节字符串: byteString = "hello world! (in my default locale)" 创建一个Unicode字符串: unicodeString = u"hello Unico
  • Unicode符号范围(16进制) UTF-8编码方式(2进制) 0000 0000-0000 007F 0xxxxxxx 0000 0080-0000 07FF 110xxxxx 10xxxxxx 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx 0001 0000-0010 FFFF 11110xxx 10...
  • I'm trying to write a script in python to convert utf-8 files into ASCII files:#!/usr/bin/env python# *-* coding: iso-8859-1 *-*import sysimport osfilePath = "test.lrc"fichier = open(filePath, "rb")co...
  • 讲区别之前,先讲一下这两个编码的概念。1.Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,...2.utf-8是一种针对...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 78,121
精华内容 31,248
关键字:

python utf-8编码转换中文