當前位置:首頁 » 編程語言 » 系統編碼python編碼

系統編碼python編碼

發布時間: 2022-06-10 06:38:33

1. python windows系統 源代碼

一、python如何運行程序

首先說一下python解釋器,它是一種讓其他程序運行起來的程序。當你編寫了一段python程序,python解釋器將讀取程序,並按照其中的命令執行,得出結果,實際上,解釋器是代碼與機器的計算機硬體之間的軟體邏輯層。

通俗來說,我們的計算機是基於二進制進行運算的,無論你用什麼語言來寫程序,無論你的程序寫的多麼簡單或多麼復雜,最終交給計算機運行的一定是0或1,因為計算機只能識別0和1。

我們目前使用的大多數編程語言都是高級程序語言,也就是利於我們人類閱讀的語言,要使我們編寫的程序能夠在計算機上跑起來,要經過一定的轉換才可以,python程序大致的過程應該是這樣:

源代碼-->位元組碼-->pvm(虛擬機)-->機器碼

可以到Python的官方網站下載python(http://www.python.org),通常包括解釋器、庫文件及簡單的編碼環境(IDLE)。把源代碼編譯成位元組碼其實是為了程序更節省時間,如果源代碼沒有變動,那麼運行程序時會直接從位元組碼讀取,加快速度,把位元組碼放到虛擬機去解釋,可以更好的跨平台運行,最後轉換成機器碼。

二、Windows系統下搭建python編程環境。

1、進入Python官網http://www.python.org,在「Downloads」下拉菜單中選擇相應的操作系統,我們選擇windows。

最後選擇菜單中的Run下的run mole即可運行,快捷鍵為F5。

2. python文件編碼問題

還真有些弄不明白。不過我就明白的給你說。

  1. 不要用記事本,另存改變編碼,除非你目標編碼是ANSI

  2. 只要是文字都是字元編碼,不可能是內存中的編碼格式。WINDOWS使用MBCK(類似這個名子)的內部編碼。就是多位元組編碼的方式存在內存里。但是存在文件里一定是字元串,一定是正式的國際編碼。

  3. ANSI是操作系統內的標准編碼。對於通常來說就是GB18030

  4. unicode有很多編碼方式。包括utf-8,utf-16, big-5, gbk, gb18030等。所以這里微軟說的unicode估計是給微軟程序做序列化用的格式

  5. unicode big endian同上。這個編碼應該是一個長位元組編碼用的。


順便說一下,微軟記事本的UTF-8編碼文件有問題,前面有1-2個位元組的識別用字元。如果你用python或者是其它操作系統讀取文件,可能會出問題。

3. python有哪幾種編碼方式

第一種:ASCII碼。是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言,它是現今最通用的單位元組編碼系統,並等同於國際標准IS/IEC
646。
由於計算機是美國人發明的,因此,最早只有127個字母被編碼到計算機李,也就是大小寫英文字母、數字和一些符號,這個編碼表被稱為ASCII編碼,比如大寫字母A的編碼是65,小寫字母a的編碼是97,後128個稱為擴展ASCII碼。
第二種:GBK和GB2312。能在計算機中顯示中文字元是至關重要的,然而ASCII表裡一個偏旁部首都沒有,所以我們需要一個關於中文和數字對應的關系表,一個位元組只能最多表示256個字元,用處理中文顯然一個位元組是不夠的,所以我們需要採用兩個位元組來表示,所以中國制定了GB2312編碼,用來將中文編寫進去。
第三種:Unicode。因為各個國家都有一套自己的編碼,所以無法避免沖突,因此Unicode誕生了。它可以把所有語言都統一到一套編碼里,這樣就不會存在亂碼問題了,現代操作系統和大多數編程語言都直接支持Unicode。
第四種:UFT-8。基於節約的原則,出現了把Unicode編碼轉化為可變長編碼的UTF-8編碼。而UTF-8編碼把一個Unicode字元根據不同的數字大小編碼成1-6個位元組,常用的英文字母被編碼成一個位元組,漢字通常是3個位元組,只有很生僻的字元才會被編碼成4-6個位元組,如果你要傳輸的文本包含大量英文字元,用UTF-8編碼就能節省空間。

4. python3字元串都是什麼編碼

編碼

字元串是一種數據類型,但是,字元串比較特殊的是還有一個編碼問題。

因為計算機只能處理數字,如果要處理文本,就必須先把文本轉換為數字才能處理。最早的計算機在設計時採用8個比特(bit)作為一個位元組(byte),所以,一個位元組能表示的最大的整數就是255(二進制11111111=十進制255),如果要表示更大的整數,就必須用更多的位元組。比如兩個位元組可以表示的最大整數是65535,4個位元組可以表示的最大整數是4294967295。

由於計算機是美國人發明的,因此,最早只有127個字母被編碼到計算機里,也就是大小寫英文字母、數字和一些符號,這個編碼表被稱為ASCII編碼,比如大寫字母A的編碼是65,小寫字母z的編碼是122。

Unicode

Unicode把所有語言都統一到一套編碼里,這樣就不會再有亂碼問題了。

Unicode標准也在不斷發展,但最常用的是用兩個位元組表示一個字元(如果要用到非常偏僻的字元,就需要4個位元組)。現代操作系統和大多數編程語言都直接支持Unicode。

現在,捋一捋ASCII編碼和Unicode編碼的區別:ASCII編碼是1個位元組,而Unicode編碼通常是2個位元組。

字母A用ASCII編碼是十進制的65,二進制的01000001;

字元0用ASCII編碼是十進制的48,二進制的00110000,注意字元'0'和整數0是不同的;

漢字已經超出了ASCII編碼的范圍,用Unicode編碼是十進制的20013,二進制的01001110 00101101。

如果把ASCII編碼的A用Unicode編碼,只需要在前面補0就可以,因此,A的Unicode編碼是00000000 01000001。

新的問題又出現了:如果統一成Unicode編碼,亂碼問題從此消失了。但是,如果你寫的文本基本上全部是英文的話,用Unicode編碼比ASCII編碼需要多一倍的存儲空間,在存儲和傳輸上就十分不劃算。

所以,又出現了把Unicode編碼轉化為「可變長編碼」的UTF-8編碼。UTF-8編碼把一個Unicode字元根據不同的數字大小編碼成1-6個位元組,常用的英文字母被編碼成1個位元組,漢字通常是3個位元組,只有很生僻的字元才會被編碼成4-6個位元組。如果你要傳輸的文本包含大量英文字元,用UTF-8編碼就能節省空間:

字元

ASCII

Unicode

UTF-8

A 01000001 00000000 01000001 01000001

中 x 01001110 00101101 11100100 10111000 10101101

從上面的表格還可以發現,UTF-8編碼有一個額外的好處,就是ASCII編碼實際上可以被看成是UTF-8編碼的一部分,所以,大量只支持ASCII編碼的歷史遺留軟體可以在UTF-8編碼下繼續工作。

搞清楚了ASCII、Unicode和UTF-8的關系,我們就可以總結一下現在計算機系統通用的字元編碼工作方式:

在計算機內存中,統一使用Unicode編碼,當需要保存到硬碟或者需要傳輸的時候,就轉換為UTF-8編碼。

用記事本編輯的時候,從文件讀取的UTF-8字元被轉換為Unicode字元到內存里,編輯完成後,保存的時候再把Unicode轉換為UTF-8保存到文件:

瀏覽網頁的時候,伺服器會把動態生成的Unicode內容轉換為UTF-8再傳輸到瀏覽器:

所以你看到很多網頁的源碼上會有類似<meta charset="UTF-8" />的信息,表示該網頁正是用的UTF-8編碼。

Python的字元串

在最新的Python 3版本中,字元串是以Unicode編碼的,也就是說,Python的字元串支持多語言,例如:

>>> print('包含中文的str')
包含中文的str

對於單個字元的編碼,Python提供了ord()函數獲取字元的整數表示,chr()函數把編碼轉換為對應的字元:

1個中文字元經過UTF-8編碼後通常會佔用3個位元組,而1個英文字元只佔用1個位元組。

在操作字元串時,我們經常遇到str和bytes的互相轉換。為了避免亂碼問題,應當始終堅持使用UTF-8編碼對str和bytes進行轉換。

Python源代碼也是一個文本文件,所以,當你的源代碼中包含中文的時候,在保存源代碼時,就需要務必指定保存為UTF-8編碼。當Python解釋器讀取源代碼時,為了讓它按UTF-8編碼讀取,我們通常在文件開頭寫上這兩行

#!/usr/bin/env python3# -*- coding: utf-8 -*-

第二行注釋是為了告訴Python解釋器,按照UTF-8編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼。

格式化:

在Python中,採用的格式化方式和C語言是一致的,用%實現,舉例如下:

format % (...params)
>>> 'Hello, %s' % 'world''Hello, world'>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)'Hi, Michael, you have $1000000.'

%運算符就是用來格式化字元串的。在字元串內部,%s表示用字元串替換,%d表示用整數替換,%x表示16進制整數,有幾個%?佔位符,後面就跟幾個變數或者值,順序要對應好。如果只有一個%?,括弧可以省略。

格式化整數和浮點數還可以指定是否補0和整數與小數的位數:

>>> '%2d-%02d' % (3, 1)' 3-01'>>> '%.2f' % 3.1415926'3.14'

有些時候,字元串裡面的%是一個普通字元怎麼辦?這個時候就需要轉義,用%%來表示一個%:

>>> 'growth rate: %d %%' % 7'growth rate: 7 %'

5. 如何設置python的編碼格式為utf-8

重裝了系統(ubuntu 14.04)原來正常可用的OpenERP項目在切換到開發者模式的時候報錯:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128)
而在伺服器上的項目正常可用,其原因是由於python的默認編碼設置為ascii,可以用以下命令查看:
import sys
sys.getdefaultencoding()
解決方案有兩種:
1. 在項目啟動文件中添加設置字元為utf8:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
2. 在python的lib文件夾下的sitecustomize.py文件中添加代碼:(我的文件位於/usr/lib/python2.7)
import sys
reload(sys)
sys.setdefaultencoding('utf8')
try:
import apport_python_hook
except ImportError:
pass
else:
apport_python_hook.install()
relaod(sys)一句是必須的

6. 怎麼在Python里使用UTF-8編碼

概述

在python代碼即.py文件的頭部聲明即可

解析

py文件中的編碼

Python 默認腳本文件都是 ANSCII 編碼的,當文件 中有非 ANSCII 編碼范圍內的字元的時候就要使用"編碼指示"來修正一個 mole 的定義中,如果.py文件中包含中文字元(嚴格的說是含有非anscii字元),則需要在第一行或第二行指定編碼聲明:

# -*- coding=utf-8 -*-

#coding=utf-8

# 以上兩種選其一即可

其他的編碼如:gbk、gb2312也可以;否則會出現:

SyntaxError: Non-ASCII character 'xe4' in file test.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

python中的編碼與解碼

先說一下python中的字元串類型,在python中有兩種字元串類型,分別是 str 和 unicode,他們都是basestring的派生類;

str類型是一個包含Characters represent (at least) 8-bit bytes的序列;

unicode 的每個 unit 是一個 unicode obj;

在str的文檔中有這樣的一句話:

    The string data type is also used to represent arrays of bytes, e.g., to hold data read from a file.

也就是說在讀取一個文件的內容,或者從網路上讀取到內容時,保持的對象為str類型;如果想把一個str轉換成特定編碼類型,需要把str轉為Unicode,然後從unicode轉為特定的編碼類型如:utf-8、gb2312等。

拓展內容

utf-8編碼

UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字元編碼,也是一種前綴碼。它可以用來表示Unicode標准中的任何字元,且其編碼中的第一個位元組仍與ASCII兼容,這使得原來處理ASCII字元的軟體無須或只須做少部分修改,即可繼續使用。因此,它逐漸成為電子郵件、網頁及其他存儲或發送文字的應用中,優先採用的編碼。

UTF-8使用一至六個位元組為每個字元編碼(盡管如此,2003年11月UTF-8被RFC 3629重新規范,只能使用原來Unicode定義的區域,U+0000到U+10FFFF,也就是說最多四個位元組):

1、128個US-ASCII字元只需一個位元組編碼(Unicode范圍由U+0000至U+007F)。

2、帶有附加符號的拉丁文、希臘文、西里爾字母、亞美尼亞語、希伯來文、阿拉伯文、敘利亞文及它拿字母則需要兩個位元組編碼(Unicode范圍由U+0080至U+07FF)。

3、其他基本多文種平面(BMP)中的字元(這包含了大部分常用字,如大部分的漢字)使用三個位元組編碼(Unicode范圍由U+0800至U+FFFF)。

4、其他極少使用的Unicode輔助平面的字元使用四至六位元組編碼(Unicode范圍由U+10000至U+1FFFFF使用四位元組,Unicode范圍由U+200000至U+3FFFFFF使用五位元組,Unicode范圍由U+4000000至U+7FFFFFFF使用六位元組)。

對上述提及的第四種字元而言,UTF-8使用四至六個位元組來編碼似乎太耗費資源了。但UTF-8對所有常用的字元都可以用三個位元組表示,而且它的另一種選擇,UTF-16編碼,對前述的第四種字元同樣需要四個位元組來編碼,所以要決定UTF-8或UTF-16哪種編碼比較有效率,還要視所使用的字元的分布范圍而定。不過,如果使用一些傳統的壓縮系統,比如DEFLATE,則這些不同編碼系統間的的差異就變得微不足道了。若顧及傳統壓縮演算法在壓縮較短文字上的效果不大,可以考慮使用Unicode標准壓縮格式(SCSU)。

互聯網工程工作小組(IETF)要求所有互聯網協議都必須支持UTF-8編碼。互聯網郵件聯盟(IMC)建議所有電子郵件軟體都支持UTF-8編碼。

7. python是什麼編碼格式

python編碼總結:
1).首先python有兩種格式的字元串,str和unicode,其中unicode相當於位元組碼那樣,可以跨平台使用。
str轉化為unicode可以通過unicode(),u,str.decode三種方式
unicode轉化為str,如果有中文的話,一般通過encode的方式
2).如果代碼中有中文的話,我們一般會添加 "# coding=utf-8",這個是什麼作用呢,一般如下:
如果代碼中有中文注釋,就需要此聲明比較高級的編輯器(比如我的emacs),會根據頭部聲明,將此作為代碼文件的格式。程序會通過
頭部聲明,解碼初始化 u」人生苦短」,這樣的unicode對象,(所以頭部聲明和代碼的存儲格式要一致
所以,當我們填上編碼頭的時候,使用s="中文",實際上type(s)是一個str,是已經將unicode以utf-8格式編碼成str。
其次,如果我們在代碼中使用s=u'中文',相當於將str以utf-8解碼成unicode。
推薦學習《python教程》。

8. python3如何把字元串轉換成系統默認編碼

python 3和2很大區別就是python本身改為默認用unicode編碼。
字元串不再區分"abc"和u"abc", 字元串"abc"默認就是unicode,不再代表本地編碼、
由於有這種內部編碼,像c#和java類似,再沒有必要在語言環境內做類似設置編碼,比如「sys.setdefaultencoding」;
也因此也python 3的代碼和包管理上打破了和2.x的兼容。2.x的擴展包要適應這種情況改寫。
另一個問題是語言環境內只有unicode怎麼輸出gbk之類的本地編碼。
答按慣例都在(序列化)輸出時才轉換成本地編碼。
比如

1

file.write("GBK的中文".encode("GBK"))

python環境內字元串用str.encode("GBK")方法輸出成位元組串用於和其他環境交流。

9. python默認的字元編碼是什麼

Python的默認編碼是ASCII格式:

  1. ASCII(American Standard Code for Information Interchange),是一種單位元組的編碼。計算機世界裡一開始只有英文,而單位元組可以表示256個不同的字元,可以表示所有的英文字元和許多的控制符號;

  2. 源代碼文件中,如果有用到非ASCII字元,則需要在文件頭部進行字元編碼的聲明,如下:#-*- coding: UTF-8 -*-

  3. 實際上Python只檢查#、coding和編碼字元串,其他的字元都是為了美觀加上的。另外,Python中可用的字元編碼有很多,並且還有許多別名,還不區分大小寫,比如UTF-8可以寫成u8。

10. python編碼的問題

ot=os.listdir("F:")
printot

測試了下上面這兩條語句,中文命名的文件夾列表顯示如下:

['xd2xf4xc0xd6', 'xcdxbcxc6xac']


這不叫亂碼,只是以utf-8編碼表示中文字元串。你的本意是想要得到['abc', 'bcd', '音樂', '圖片']這種形式的輸出,但是實際顯示卻是utf-8編碼。

假設我們創建一個列表 ot = ['abc', 'bcd', '音樂', '圖片'],並且文件開頭定義了以utf-8格式進行編碼。那麼在內存里列表對象ot存儲的是'abc', 'bcd', 'xd2xf4xc0xd6', 'xcdxbcxc6xac'這四個值。


  1. 為什麼英文字元還是英文,中文字元就變成「亂碼」了呢?因為計算機不是人,它是看不懂'音樂'和'圖片'這幾個漢字字元的,它只認識字元的編碼值。對於多種編碼來說,鍵盤上那些英文字元編碼值都是一樣的。中文則不一樣。


  2. 為什麼列印字元串顯示出了中文,列印列表的時候顯示的卻是utf-8編碼?print 的作用是把計算機可理解的對象以人類可以理解的方式列印出來,具體顯示結果跟你要列印的對象有關,列印的是字元串,顯示的就是人類語言表示的字元串對象,列印的是列表,顯示的就是列表對象本身,也即該列表裡存儲的值。


printot表示列印一個列表對象ot,列印的是列表本身,所以它裡面的項以什麼形式存儲的就以
什麼形式顯示。
熱點內容
存儲開銷 發布:2024-05-06 00:13:38 瀏覽:953
伺服器怎麼盈利 發布:2024-05-05 23:56:16 瀏覽:941
java網站培訓學校 發布:2024-05-05 23:43:11 瀏覽:40
淘寶搜索演算法 發布:2024-05-05 23:37:07 瀏覽:998
sqlwhencasethen 發布:2024-05-05 23:27:51 瀏覽:641
模架編程軟體 發布:2024-05-05 23:26:54 瀏覽:483
存儲過程異常 發布:2024-05-05 23:24:03 瀏覽:399
winxp訪問不了win7 發布:2024-05-05 23:05:23 瀏覽:734
演算法牛 發布:2024-05-05 22:43:40 瀏覽:720
grublinux引導 發布:2024-05-05 22:37:56 瀏覽:216