作者jamesxxx1997 (黄~)
看板Python
标题[问题] 关於Python编码的疑惑
时间Sat Sep 23 12:59:18 2017
各位大大好,在下是Python新手,想要确认一下我编码的基础概念有没有问题
,所以举了一个例子,想请各位看看我的想法是否有误~
https://imgur.com/a/iDdl0,这张图是我目前概念的整理
举例如下 :
<文字编辑器Atom的编码设定为'ascii',stdin.encoding == utf-8
,stdout.encoding == utf-8>
1.当我在文字编辑器上输入字串时
,我的字串会被sys.stdin的编码'utf-8'转成unicode code point,然後sys.stdout
再将这些unicode code point编码成位元组,再利用位元组在萤幕上渲染出字型
,而当我要存档时,unicode code point会被'ascii'编码系统转成位元组并储存在
记忆体中,当我要开启档案时,文字编辑器Atom就会把存在记忆体中的位元组以'ascii'
的方式解码成unicode code point
2.Python内部是以unicode code point进行处理
3.(问题)
当我输入字串'伥',时,sys.stdin就会把它encoding成unicode code point,但是
当我直接输入伥的unicode code point '\u5000'时,sys.stdin会怎麽做呢?
以上三点就是我的问题,新手第一次发问,如果有不对的发问方式,请各位不吝指教
,谢谢~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.83.34.20
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1506142761.A.A97.html
1F:→ neil987: py2 ascii py3 utf-8 09/23 22:12
2F:→ jamesxxx1997: n大的意思是? 09/23 22:25
3F:推 neil987: 同样的字串 在python 2.x跟3不一样 09/23 23:17
4F:→ jamesxxx1997: 阿对吼,我忘了说我用Python3.6 09/23 23:34
5F:→ jamesxxx1997: 有人可以帮忙解惑吗QQ 09/24 12:16
6F:→ neil987: 在py3里面 你输入'伥'跟输入他的unicode一样都是str 09/24 15:32
8F:→ jamesxxx1997: 恩...那n大,请问我三个问题中的第一个有哪里错吗 09/24 16:26
9F:→ jamesxxx1997: 因为在我的观念中,我输入的东西是一堆bytes 09/24 16:28
10F:→ jamesxxx1997: 在stdin中,Python会把它转成unicode code point 09/24 16:28
11F:→ jamesxxx1997: 所以我单纯输入一个字串,与输入\uffff比较起来 09/24 16:30
12F:→ jamesxxx1997: \u因为有转义字元\u,所以会让stdin对字串'\u5000' 09/24 16:31
13F:→ jamesxxx1997: 做出与一般字串不同的encode方式? 09/24 16:32
14F:→ jamesxxx1997: 我画个图来解释我的想法XDDDDD 09/24 16:35
16F:→ neil987: bytes 跟str这两个是不同资料型态 09/24 16:58
17F:→ jamesxxx1997: rrr,我没说这两个是同一个型态阿 09/24 20:09
18F:→ jamesxxx1997: 我在键盘上输入的东西其实是bytes,被stdin转成unic 09/24 20:10
19F:→ jamesxxx1997: unicode code point 09/24 20:10
20F:→ jamesxxx1997: n大,很谢谢你的回覆,不过我的问题跟你的回答 09/24 20:13
21F:→ jamesxxx1997: 一样XDDDDD 09/24 20:13
22F:→ s860134: 你把 stdin 导到档案不就得了... 09/25 08:28
23F:→ s860134: 导到档案不会骗你吧XD 09/25 08:28
24F:→ jamesxxx1997: 恩...s大,我真的是自己试过,爬文也爬过 09/25 23:07
25F:→ jamesxxx1997: stackoverflow也查过,但还是不懂,所以才来问 09/25 23:08
26F:→ jamesxxx1997: 自己尝试过不下百次,但越试越乱,所以才会来问 09/25 23:09
27F:→ jamesxxx1997: 还是我发问态度不好,或图不清楚,都可以说 09/25 23:10
28F:→ jamesxxx1997: 但关於爬文或尝试,我真的尽力了,也卡住一个多星期 09/25 23:10
29F:→ jamesxxx1997: 所以才会把问题浓缩,画成图来整理问题并提问 09/25 23:11
30F:→ jamesxxx1997: 所以真的很希望您能看一下我的问题叙述,并跟我说 09/25 23:12
31F:→ s860134: 我的理解是这样,你的问题混杂两件事情 09/26 00:22
32F:→ s860134: 你设定文自编辑器这些编码,只是让你自己看到而已 09/26 00:23
33F:→ s860134: 跟 python interpreter 吃进去的没什麽关系 09/26 00:23
34F:→ s860134: 对 python3 来说 '\u5000' == '伥' 09/26 00:25
35F:→ s860134: 两者之间的差异在转成 byte code 时就已经被消除了 09/26 00:31
36F:→ jamesxxx1997: 恩恩,昨天有请教过同学,发现我想太多了 09/26 17:19
37F:→ jamesxxx1997: 我还是碰到问题时再把code丢上来,这样问题比较明确 09/26 17:19
38F:→ jamesxxx1997: 谢谢解答唷~~~~~~~ 09/26 17:20