-
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写的源码 -
如何利用python批量转换文件编码?例如,txt文件由UTF-16LE转为UTF-8……
2020-12-21 08:54:27例如,txt文件由UTF-16LE转为UTF-8…… 问题重现:往往利用python处理数据时,都会遇到文件编码格式不对,那么如何批量转换呢,下面直接上代码! 实例:整个文件夹的txt文件由UTF-16LE转为UTF-8 # coding utf-8 ... -
使用python批量转换文件编码为UTF-8的实现
2020-09-17 14:59:46主要介绍了使用python批量转换文件编码为UTF-8的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 -
Python:UTF-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 =
[阅读全文]
-
使用python批量转换文件编码为UTF-8
2021-01-20 02:52:30本来一开始的思路还是比较清晰,觉得也比较简单,天真的认为用GBK的方式读取出文件内容,然后UTF8写入就好了,可是在实际的操作中我发现我就是太天真了,出现了大量的问题,比如说: 怎么查看文件的编码方式 好吧我... -
【Python学习 】如何将UTF-8编码转换成UTF-8 BOM编码?
2021-06-23 21:34:50一、需求描述 在我之前的博客: 【我的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工具打开此文件后不乱码。
但是这样得进行两步骤- 鼠标右键: 选择我们弄好的【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 测试一键转码并打开功能
转码中
自动打开转码后的文件
恩,到此为止,这个工具用起来才得心应手!五、参考链接
-
Python实现把utf-8格式的文件转换成gbk格式的文件
2020-12-25 17:24:21需求:将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编码转换的讲解到这里就结束了,不知道小伙伴们有没有熟练掌握呀~小编看了一遍就会了,代码真的很简单。后续有新的类似拓展,小编也会及时更新出来。
-
python对utf-8的中文转换
2022-05-19 11:30:52python3默认支持utf-8,因此对于\uXXXX这种格式的中文,可以直接转换,但经常爬虫抓取回来的中文是\\uXXXX格式,因此需要进行转换 s1='\u65f6\u4e0d\u53ef\u5931\uff0c\u65f6\u4e0d\u518d\u6765\uff01' print('s1=... -
在线UTF-8编码汉字互转 | utf8编码转换器
2020-11-25 02:43:32UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一... -
python utf-8 乱码 python编码问题总结
2020-11-20 23:41:46乱码原因:因为你的文件声明为utf-8,并且也应该是用utf-8的编码保存的源文件。但是windows的本地默认编码是cp936,也就是gbk编码,所以在控制台直接打印utf-8的字符串当然是乱码了。解决方法:在控制台打印的地方用... -
基于python2如何将txt内utf-8转换成中文
2021-02-10 09:41:14在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... -
Python3编码问题 Unicode utf-8 bytes互转方法
2020-12-23 19:47:54为什么需要本文,因为在对接某些很老的接口的时候,需要传递过去的是16进制的hex字符串,并且要求对传的字符串做编码,这里就介绍了utf-8 Unicode bytes 等等。 #英文使用utf-8 转换成16进制hex字符串的方法 newstr... -
Python MySQLdb 使用utf-8 编码插入中文数据问题
2021-01-20 05:01:06最近帮伙计做了一个从网页抓取股票信息并把相应信息存入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的定义... -
Python将UTF-8 w/ BOM转换为UTF-8 w/o BOM
2022-03-09 09:24:08import 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 字符
2021-07-18 21:50:28python-latin1-to-utf8 将错误的 Latin-1 字符转换为 UTF-8 字符。 是对编码问题的全面描述和解释。 用法 $ python latin1-to-utf8.py Automática > Automática 相关项目 -
Python3:UTF-8编码字符串转换中文、Unicode编码
2020-02-21 19:03:26在Python3中 -
python3中文文件转换为utf-8编码
2020-11-23 13:48:21在使用python3 转换文件编码的时候,读到一个文件的时候,显示在read() 处出现UnicodeDecodeError。但是用notepad++打开显示的文件编码就是gb2312。后来看到这篇博客https://www.jianshu.com/p/9cb55b7173ae,gb... -
在Python 3中从utf-16转换为utf-8
2020-11-24 06:56:36其次,存在字节类,它只是字节序列,通常表示存储在编码中的字符串(如utf-8或iso-8859-15).这对您意味着什么?据我了解,您想读写utf-8文件.让我们编写一个程序,用“?”字符替换所有“?”def main():# Let... -
在Python中将UTF-8转换为字符串文字
2021-07-16 13:15:56I 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 -
字符编码和python使用encode,decode转换utf-8, gbk, gb2312
2020-11-21 02:26:33Unicode符号范围(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... -
用于将UTF-8转换为ASCII的Python脚本
2021-07-16 13:49:40I'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... -
python基础-Unicode和UTF-8的区别
2020-12-10 22:59:20讲区别之前,先讲一下这两个编码的概念。1.Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,...2.utf-8是一种针对...