python编码问题明白了

 

核心点: 

1. 在现在计算机系统通用的字符编码工作方式:在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或需要传输时,可以转换为UTF-8编码。

2. decode()方法将其他编码字符转化为Unicode编码字符。encode()方法将Unicode编码字符转化为其他编码字符。

3. ASCII码仅仅能处理英文,GB2312处理中文,全球统一有了Unicode,为了提高Unicode存储和传输性能,产生了UTF-8,它是Unicode的一种实现形式。

4. Python2 解析器使用的默认解析编码是 ASCII,可以sys.setdefaultencoding() 设置成 utf-8.

5. # coding=utf-8 提示编译器这个文件是 utf-8编码, 但你一定要保证文件确实是这个编码噢... 

6. a = '卧室门是中华儿女',  a.encode("utf-8") 等价于 a.decode(defaultencoding).encode("utf-8") , 所以会报错.   【chardet.detect(a)  GB2312;  a.decode('GB2312').encode('utf-8')】  

 

# 以下代码在Windows系统  CMD+R python之后的命令行执行. 
>>> d = '思路发加上的'

>>> chardet.detect(d)
{'confidence': 0.99, 'language': 'Chinese', 'encoding': 'GB2312'}

>>> d
'\xcb\xbc\xc2\xb7\xb7\xa2\xbc\xd3\xc9\xcf\xb5\xc4'



>>> d.encode('utf-8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcb in position 0: ordinal not in range(128)

>>> d.decode('GB2312').encode('utf-8')
'\xe6\x80\x9d\xe8\xb7\xaf\xe5\x8f\x91\xe5\x8a\xa0\xe4\xb8\x8a\xe7\x9a\x84'

>>> d.decode('GB2312')
u'\u601d\u8def\u53d1\u52a0\u4e0a\u7684'

>>> d.decode('GB2312')
u'\u601d\u8def\u53d1\u52a0\u4e0a\u7684'

>>> d.decode('GB2312').encode('GB2312')
'\xcb\xbc\xc2\xb7\xb7\xa2\xbc\xd3\xc9\xcf\xb5\xc4'

>>> d.encode('GB2312')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcb in position 0: ordinal not in range(128)

>>>

  

 参考:

https://blog.csdn.net/apache0554/article/details/53889253 

https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431664106267f12e9bef7ee14cf6a8776a479bdec9b9000  

转载于:https://www.cnblogs.com/huiming/p/9415461.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较复杂的问题,需要分几个步骤来实现。我会尽量详细地回答你,如果有不明白的地方,可以再问我。 首先,你需要使用Python的OpenCV库来读取视频文件。代码示例如下: ```python import cv2 cap = cv2.VideoCapture('video.mp4') while True: ret, frame = cap.read() if not ret: break # 在这里进行你的处理,比如抽帧、编码成PNG格式等 ``` 在上面的代码中,我们使用`cv2.VideoCapture`打开了一个视频文件,并通过循环不断读取视频帧。接下来,你可以在循环中进行你的处理。 对于抽帧,你可以设置一个计数器,每隔一定帧数就保存一帧。比如,下面代码中的`count`变量控制了每10帧保存一次: ```python import cv2 cap = cv2.VideoCapture('video.mp4') count = 0 while True: ret, frame = cap.read() if not ret: break count += 1 if count % 10 == 0: # 在这里将帧编码成PNG格式并发送到云端 ``` 对于编码成PNG格式,你可以使用OpenCV的`cv2.imencode`函数。示例如下: ```python import cv2 import numpy as np frame = cv2.imread('frame.jpg') ret, png_data = cv2.imencode('.png', frame) # 将png_data发送到云端 ``` 在上面的代码中,我们首先读取了一个JPEG格式的图片,并使用`cv2.imencode`将其编码成了PNG格式。编码后的数据存储在`png_data`变量中,可以直接发送到云端进行检测。 至于如何发送数据到云端,这取决于你使用的云平台和通信协议。常见的方式包括HTTP协议、MQTT协议等。 最后,为了保证程序的流畅运行,你可能需要将读取视频和处理视频的代码分别放在不同的线程中运行。这里涉及到多线程编程的知识,需要注意线程安全问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值