[问题] 关于Python编码的疑惑

楼主: jamesxxx1997 (黄~)   2017-09-23 12:59:18
各位大大好,在下是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会怎么做呢?
以上三点就是我的问题,新手第一次发问,如果有不对的发问方式,请各位不吝指教
,谢谢~
作者: neil987 (R5大小姐-EX人品崩坏)   2017-09-23 22:12:00
py2 ascii py3 utf-8
楼主: jamesxxx1997 (黄~)   2017-09-23 22:25:00
n大的意思是?
作者: neil987 (R5大小姐-EX人品崩坏)   2017-09-23 23:17:00
同样的字串 在python 2.x跟3不一样
楼主: jamesxxx1997 (黄~)   2017-09-23 23:34:00
阿对吼,我忘了说我用Python3.6
作者: neil987 (R5大小姐-EX人品崩坏)   2017-09-24 15:32:00
在py3里面 你输入'伥'跟输入他的unicode一样都是strhttps://i.imgur.com/F2tw5iZ.png
楼主: jamesxxx1997 (黄~)   2017-09-24 16:26:00
恩...那n大,请问我三个问题中的第一个有哪里错吗因为在我的观念中,我输入的东西是一堆bytes在stdin中,Python会把它转成unicode code point所以我单纯输入一个字串,与输入\uffff比较起来\u因为有转义字符\u,所以会让stdin对字串'\u5000'做出与一般字串不同的encode方式?我画个图来解释我的想法XDDDDDhttps://imgur.com/pTtVFuA
作者: neil987 (R5大小姐-EX人品崩坏)   2017-09-24 16:58:00
bytes 跟str这两个是不同资料型态
楼主: jamesxxx1997 (黄~)   2017-09-24 20:09:00
rrr,我没说这两个是同一个型态阿我在键盘上输入的东西其实是bytes,被stdin转成unicunicode code pointn大,很谢谢你的回复,不过我的问题跟你的回答一样XDDDDD
作者: s860134 (s860134)   2017-09-25 08:28:00
你把 stdin 导到档案不就得了...导到档案不会骗你吧XD
楼主: jamesxxx1997 (黄~)   2017-09-25 23:07:00
恩...s大,我真的是自己试过,爬文也爬过stackoverflow也查过,但还是不懂,所以才来问自己尝试过不下百次,但越试越乱,所以才会来问还是我发问态度不好,或图不清楚,都可以说但关于爬文或尝试,我真的尽力了,也卡住一个多星期所以才会把问题浓缩,画成图来整理问题并提问所以真的很希望您能看一下我的问题叙述,并跟我说
作者: s860134 (s860134)   2017-09-26 00:22:00
我的理解是这样,你的问题混杂两件事情你设定文自编辑器这些编码,只是让你自己看到而已跟 python interpreter 吃进去的没什么关系对 python3 来说 '\u5000' == '伥'两者之间的差异在转成 byte code 时就已经被消除了
楼主: jamesxxx1997 (黄~)   2017-09-26 17:19:00
恩恩,昨天有请教过同学,发现我想太多了我还是碰到问题时再把code丢上来,这样问题比较明确谢谢解答唷~~~~~~~

Links booklink

Contact Us: admin [ a t ] ucptt.com