江湖散人 发表于 2021-5-2 09:57:31

utf-8的问题

encodings.utf-8-sig --- 带BOM签名的UTF-8编解码器
此模块实现了 UTF-8 编解码器的一个变种:在编码时将把 UTF-8 已编码 BOM 添加到 UTF-8 编码字节数据的开头。
对于有状态编码器此操作只执行一次(当首次写入字节流时)。
在解码时将跳过数据开头作为可选项的 UTF-8 已编码 BOM。

这段话啥意思啊?哪位大神帮忙解释一下啊

阿奇_o 发表于 2021-5-2 12:35:07

懒得去深究,编码的问题,如果乱码,读不出来,就换一种编码就行,

通常 就用"utf-8";有时可能会用这种 "utf-8-sig"

{:10_312:}

江湖散人 发表于 2021-5-2 20:53:02

阿奇_o 发表于 2021-5-2 12:35
懒得去深究,编码的问题,如果乱码,读不出来,就换一种编码就行,

通常 就用"utf-8";有时可能会用这种 ...

我看视频的时候,老师讲解的时候都没有后边那个sig。我就想知道为啥老师那边没有,而我这必须有。没有就显示不正常 了。

Brick_Porter 发表于 2021-5-2 21:42:19

江湖散人 发表于 2021-5-2 20:53
我看视频的时候,老师讲解的时候都没有后边那个sig。我就想知道为啥老师那边没有,而我这必须有。没有就 ...

BOM是字节顺序标记,用来标记字节在内存中的存储位置,一般我们也用不到。在Windows上保存文本时如果没有注意编码就可能会选择"带有BOM的UTF-8"这个选项,这样一来使用代码读取文件的时候你就必须使用encoding="utf-8-sig"了。解决办法也很简单,另存为一次,主动选择编码为"UTF-8"。至于另存为的方法,既可以使用记事本也可以使用Python代码,哪个方便就选择哪个了。

阿奇_o 发表于 2021-5-2 21:51:01

江湖散人 发表于 2021-5-2 20:53
我看视频的时候,老师讲解的时候都没有后边那个sig。我就想知道为啥老师那边没有,而我这必须有。没有就 ...

正所谓,人各有异,机器也是呀,你的操作系统都可能不一样,还有系统的“环境变量”。文件编码方式也是多了去了。。

更直接的(大概率原因是),你文件存储时,可能用了这种BOM标记的编码格式,虽然都属于utf-8系列,
但有时 有些语言 有些模块的、有些方法,没考虑这种编码的处理方式,用一般的utf-8就不能解码出来,于是就表现为乱码。

所以,明白了?

toysworld 发表于 2021-5-4 05:04:23

还是推荐用gb2312

江湖散人 发表于 2021-5-4 10:01:07

toysworld 发表于 2021-5-4 05:04
还是推荐用gb2312

gb2313是个什么东东?

z5560636 发表于 2021-5-4 11:40:48

江湖散人 发表于 2021-5-4 10:01
gb2313是个什么东东?

中文简体。
页: [1]
查看完整版本: utf-8的问题