[問題] 關於Python編碼的疑惑

看板Python作者 (黃~)時間8年前 (2017/09/23 12:59), 編輯推噓1(1037)
留言38則, 3人參與, 最新討論串1/1
各位大大好,在下是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

09/23 22:12, , 1F
py2 ascii py3 utf-8
09/23 22:12, 1F

09/23 22:25, , 2F
n大的意思是?
09/23 22:25, 2F

09/23 23:17, , 3F
同樣的字串 在python 2.x跟3不一樣
09/23 23:17, 3F

09/23 23:34, , 4F
阿對吼,我忘了說我用Python3.6
09/23 23:34, 4F

09/24 12:16, , 5F
有人可以幫忙解惑嗎QQ
09/24 12:16, 5F

09/24 15:32, , 6F
在py3裡面 你輸入'倀'跟輸入他的unicode一樣都是str
09/24 15:32, 6F

09/24 15:33, , 7F

09/24 16:26, , 8F
恩...那n大,請問我三個問題中的第一個有哪裡錯嗎
09/24 16:26, 8F

09/24 16:28, , 9F
因為在我的觀念中,我輸入的東西是一堆bytes
09/24 16:28, 9F

09/24 16:28, , 10F
在stdin中,Python會把它轉成unicode code point
09/24 16:28, 10F

09/24 16:30, , 11F
所以我單純輸入一個字串,與輸入\uffff比較起來
09/24 16:30, 11F

09/24 16:31, , 12F
\u因為有轉義字元\u,所以會讓stdin對字串'\u5000'
09/24 16:31, 12F

09/24 16:32, , 13F
做出與一般字串不同的encode方式?
09/24 16:32, 13F

09/24 16:35, , 14F
我畫個圖來解釋我的想法XDDDDD
09/24 16:35, 14F

09/24 16:49, , 15F

09/24 16:58, , 16F
bytes 跟str這兩個是不同資料型態
09/24 16:58, 16F

09/24 20:09, , 17F
rrr,我沒說這兩個是同一個型態阿
09/24 20:09, 17F

09/24 20:10, , 18F
我在鍵盤上輸入的東西其實是bytes,被stdin轉成unic
09/24 20:10, 18F

09/24 20:10, , 19F
unicode code point
09/24 20:10, 19F

09/24 20:13, , 20F
n大,很謝謝你的回覆,不過我的問題跟你的回答
09/24 20:13, 20F

09/24 20:13, , 21F
一樣XDDDDD
09/24 20:13, 21F

09/25 08:28, , 22F
你把 stdin 導到檔案不就得了...
09/25 08:28, 22F

09/25 08:28, , 23F
導到檔案不會騙你吧XD
09/25 08:28, 23F

09/25 23:07, , 24F
恩...s大,我真的是自己試過,爬文也爬過
09/25 23:07, 24F

09/25 23:08, , 25F
stackoverflow也查過,但還是不懂,所以才來問
09/25 23:08, 25F

09/25 23:09, , 26F
自己嘗試過不下百次,但越試越亂,所以才會來問
09/25 23:09, 26F

09/25 23:10, , 27F
還是我發問態度不好,或圖不清楚,都可以說
09/25 23:10, 27F

09/25 23:10, , 28F
但關於爬文或嘗試,我真的盡力了,也卡住一個多星期
09/25 23:10, 28F

09/25 23:11, , 29F
所以才會把問題濃縮,畫成圖來整理問題並提問
09/25 23:11, 29F

09/25 23:12, , 30F
所以真的很希望您能看一下我的問題敘述,並跟我說
09/25 23:12, 30F

09/26 00:22, , 31F
我的理解是這樣,你的問題混雜兩件事情
09/26 00:22, 31F

09/26 00:23, , 32F
你設定文自編輯器這些編碼,只是讓你自己看到而已
09/26 00:23, 32F

09/26 00:23, , 33F
跟 python interpreter 吃進去的沒什麼關係
09/26 00:23, 33F

09/26 00:25, , 34F
對 python3 來說 '\u5000' == '倀'
09/26 00:25, 34F

09/26 00:31, , 35F
兩者之間的差異在轉成 byte code 時就已經被消除了
09/26 00:31, 35F

09/26 17:19, , 36F
恩恩,昨天有請教過同學,發現我想太多了
09/26 17:19, 36F

09/26 17:19, , 37F
我還是碰到問題時再把code丟上來,這樣問題比較明確
09/26 17:19, 37F

09/26 17:20, , 38F
謝謝解答唷~~~~~~~
09/26 17:20, 38F
文章代碼(AID): #1PnUefgN (Python)