看板 Python 關於我們 聯絡資訊
各位大大好,在下是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://www.ptt.cc/bbs/Python/M.1506142761.A.A97.html
neil987: py2 ascii py3 utf-8 09/23 22:12
jamesxxx1997: n大的意思是? 09/23 22:25
neil987: 同樣的字串 在python 2.x跟3不一樣 09/23 23:17
jamesxxx1997: 阿對吼,我忘了說我用Python3.6 09/23 23:34
jamesxxx1997: 有人可以幫忙解惑嗎QQ 09/24 12:16
neil987: 在py3裡面 你輸入'倀'跟輸入他的unicode一樣都是str 09/24 15:32
neil987: https://i.imgur.com/F2tw5iZ.png 09/24 15:33
jamesxxx1997: 恩...那n大,請問我三個問題中的第一個有哪裡錯嗎 09/24 16:26
jamesxxx1997: 因為在我的觀念中,我輸入的東西是一堆bytes 09/24 16:28
jamesxxx1997: 在stdin中,Python會把它轉成unicode code point 09/24 16:28
jamesxxx1997: 所以我單純輸入一個字串,與輸入\uffff比較起來 09/24 16:30
jamesxxx1997: \u因為有轉義字元\u,所以會讓stdin對字串'\u5000' 09/24 16:31
jamesxxx1997: 做出與一般字串不同的encode方式? 09/24 16:32
jamesxxx1997: 我畫個圖來解釋我的想法XDDDDD 09/24 16:35
jamesxxx1997: https://imgur.com/pTtVFuA 09/24 16:49
neil987: bytes 跟str這兩個是不同資料型態 09/24 16:58
jamesxxx1997: rrr,我沒說這兩個是同一個型態阿 09/24 20:09
jamesxxx1997: 我在鍵盤上輸入的東西其實是bytes,被stdin轉成unic 09/24 20:10
jamesxxx1997: unicode code point 09/24 20:10
jamesxxx1997: n大,很謝謝你的回覆,不過我的問題跟你的回答 09/24 20:13
jamesxxx1997: 一樣XDDDDD 09/24 20:13
s860134: 你把 stdin 導到檔案不就得了... 09/25 08:28
s860134: 導到檔案不會騙你吧XD 09/25 08:28
jamesxxx1997: 恩...s大,我真的是自己試過,爬文也爬過 09/25 23:07
jamesxxx1997: stackoverflow也查過,但還是不懂,所以才來問 09/25 23:08
jamesxxx1997: 自己嘗試過不下百次,但越試越亂,所以才會來問 09/25 23:09
jamesxxx1997: 還是我發問態度不好,或圖不清楚,都可以說 09/25 23:10
jamesxxx1997: 但關於爬文或嘗試,我真的盡力了,也卡住一個多星期 09/25 23:10
jamesxxx1997: 所以才會把問題濃縮,畫成圖來整理問題並提問 09/25 23:11
jamesxxx1997: 所以真的很希望您能看一下我的問題敘述,並跟我說 09/25 23:12
s860134: 我的理解是這樣,你的問題混雜兩件事情 09/26 00:22
s860134: 你設定文自編輯器這些編碼,只是讓你自己看到而已 09/26 00:23
s860134: 跟 python interpreter 吃進去的沒什麼關係 09/26 00:23
s860134: 對 python3 來說 '\u5000' == '倀' 09/26 00:25
s860134: 兩者之間的差異在轉成 byte code 時就已經被消除了 09/26 00:31
jamesxxx1997: 恩恩,昨天有請教過同學,發現我想太多了 09/26 17:19
jamesxxx1997: 我還是碰到問題時再把code丟上來,這樣問題比較明確 09/26 17:19
jamesxxx1997: 謝謝解答唷~~~~~~~ 09/26 17:20