[問題] 關於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