⑴ 用python寫好的程序如何在其他計算機上運行
"直接用輸入法打出來的字"
--
這里含好幾個過程.
(1)當你用鍵盤打字時,從鍵盤進入計算機的是ascii碼序列.
(2)「輸入法」把
ascii碼序列
轉換成
輸入法
自己規定的
碼.
(3)你在一個窗上看到的東西,例如
notepad
的文本編輯窗,wordpad
的文本編輯窗,或
dos
黑窗(控制台命令窗)那是
把
「輸入法自己規定的碼」顯示出來,這里有一個編碼到字體(font)到bitmap點陣圖形的轉換.只有當它們匹配時才能顯示出有意義的
字的形狀.否則看上去是「亂碼」.
以dos
黑窗為例,只有正確設置它的
所謂
代碼頁(code
page)
,才能顯示出有意義的字形.
gbk的code
page是cp936;
big5的code
page是cp950;
gb2312的code
page是cp20936;
dos
命令
chcp
不帶參數
可以顯示
當前
「代碼頁」,加參數可以改變
「代碼頁"
例如:chcp
936
例如:chcp
437
(4)從文本編輯窗
到
存放的文件
也有
代碼的轉換.
例如,notepad,可以存放為
unicode
小端碼,unicode
大端碼,utf-8碼.
unicode
文件會在文件頭自動添加
unicode
bom
(
byte-order
mark)
---
所以,直接用輸入法打出來的字是什麼編碼的呢,具體情況具體分析,不可一概而論.
⑵ Python 源程序編碼注意事項
默認情況下,Python 源文件是 UTF-8 編碼。在此編碼下,全世界大多數語言的字元可以同時用在字元串、標識符和注釋中 — 盡管 Python 標准庫僅使用 ASCII 字元作為標識符,這只是任何可移植代碼應該遵守的約定。如果要正確的顯示所有的字元,你的編輯器必須能識別出文件是 UTF-8 編碼,並且它使用的字體能支持文件中所有的字元。
你也可以為源文件制定不同的字元編碼。為此,在 #! 行(首行)後插入至少一行特殊的注釋行來定義源文件的編碼:
# -*- coding: encoding -*-
通過此聲明,源文件中所有的東西都會被當作用 encoding 指代的 UTF-8 編碼對待。在 Python 庫參考手冊 codecs 一節中你可以找到一張可用的編碼列表。
例如,如果你的編輯器不支持 UTF-8 編碼的文件,但支持像 Windows-1252 的其他一些編碼,你可以定義:
# -*- coding: cp-1252 -*-
這樣就可以在源文件中使用 Windows-1252 字元集中的所有字元了。這個特殊的編碼注釋必須在文件中的 第一或第二 行定義。
⑶ 怎麼在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編碼。
⑷ Python中怎麼定義中文編碼
在程序的第一行指定中文編碼方式,並且輸入字元為unicode,然後編碼成gb18030方式,完整程序如下:
-------------------------------------
# -*- coding: gb18030 -*-
#!/usr/bin/python
cont = raw_input( u"請輸入:".encode("gb18030") )
print cont
-------------------------------------
輸入的內容也可以是中文
⑸ 程序小白,問一下php網站想要運行Python文件需要怎麼做
關於PHP調用Python數據傳輸問題
這是以前大學時做項目出現的問題,現在把它挪上來,希望給遇到問題的未來大佬給出一些小的思路,請大佬們不要大意的幫我改正,如果出現問題或者有更好的解決方法,希望大家可以給出,謝謝!
以前小組開展項目實訓,我們小組選擇的是大數據分析,其中有一個用python進行文本分析之後對用戶輸入的數據進行分析,然後輸出對應的崗位及其他。要求是前端將文本要求傳到後台php,php調用python程序處理,再將數據傳給php,然後再傳到前端,進行下一步處理。結果python傳回的數據,在前端顯示亂碼了,而且得出的結果與單獨運行python代碼完全不同,一句話,就是php調用python程序期間出錯了。
我很認真的檢查了好幾遍,確定自己php和python所有的編碼都是用的utf-8編碼,所以這一點是毋庸置疑的,那麼問題究竟出在哪呢?php調用python語句是
$job = "有責任心,擅長JAVA";//傳入的文本信息
$area = 'E:/text/sim_str.py';//Python程序的地址
$cmd = system("python3 $area 2>C:/Users/Administrator/Desktop/2.txt $job",$ret);//2>是將報錯內容定位到這個文件,$ret是一個返回參數,0是正常,1是出錯。
最後經過多次的測試,我發現傳過去時對文字的編碼出現了問題,應該不是UTF-8編碼了。有位大神說,這是因為windows系統會自己對傳輸的信息進行再次編碼。然後 我想直接改編碼,結果這個python3編碼改變出現了問題。最後我的解決方案是不通過系統傳送,而是直接通過第三方資料庫。雙方都調用資料庫。一切都可以解決了。
PS:後來又遇見過這種問題,我將python代碼進行了修改,讓它最終可以直接只傳遞數字,再在前端對數字進行判斷。
⑹ Python為什麼一運行就是亂碼
可能是編碼問題,開頭加上coding:utf-8試試。
⑺ python中前後台怎麼進行編碼轉換
coding聲明的編碼,和你py文件本身的編碼,要一致。
你py代碼中,所要處理的字元串,即你的html的編碼,你也要清楚
然後才可以正常的,decode或encode,才能得到你要的unicode字元串,某種編碼的字元串。
你沒有解釋清楚你的背景,所以沒法幫你。
相關的原理和示例代碼,我早就寫了教程了。
感興趣的,自己google搜:
【整理】關於HTML網頁源碼的字元編碼(charset)格式(GB2312,GBK,UTF-8,ISO8859-1等)的解釋
Python專題教程:字元串和字元編碼
其中有很多相關內容的解釋,比如:
【總結】Python2.x中常見字元編碼和解碼方面的錯誤及其解決辦法
⑻ 用什麼工具運行python代碼
python中常見的ide
Sublime Text
Sublime Text 是開發者中最流行的編輯器之一,多功能,支持多種語言,而且在開發者社區非常受歡迎。Sublime 有自己的包管理器,開發者可以使用TA來安裝組件,插件和額外的樣式,所有這些都能提升你的編碼體驗。
推薦學習《python教程》
PyCharm
PyCharm是來自JetBrains公司的全功能python開發環境。過去的15年裡JetBrains一直致力於發展頂級的開發工具,旨在讓開發工作變得輕松和愉快。
PyCharm是專業的python集成開發環境,有兩個版本。一個是免費的社區版本,另一個是面向企業開發者的更先進的專業版本。PyCharm的普及可以從這一事實來衡量,即有很多大品牌公司用戶,像Twitter,Groupon,Spotify,eBay和Telefonica等都在用PyCharm。PyCharm專業版本支持更多高級的功能,比如遠程開發功能、資料庫支持以及對web開發框架的支持等等。
我最喜歡PyCharm的原因是因為它支持很多的第三方web開發框架,比如Django、 Pyramid、web2py、google app engine 和 Flask,這些也使得它成為了一個完整的快速應用集成開發環境。
WingIDE
WingIDE是個相當優秀的 IDE;其編輯器包括大量語言的語法標簽高亮顯示,雖然它只是個面向 Python 的工具。源代碼瀏覽器對瀏覽項目或模塊非常實用(表現在可導航源代碼和文檔行摘要中)。雖然沒有監視器,但調試器設計得很好。編輯器有優秀的命令自動完成和函數跳轉列表,但是沒有代碼合並。面向項目風格的 IDE 對於大型產品非常有用(在這方面,除了 Komodo 以外,它是大多免費 IDE 中較好的)。總體的界面就像增強的 Idle,使用了與許多 TK 和 XWindow 界面類似的「多窗口」排列方式。我喜歡使用對接和嵌入(這方面,並不是過多使用 MS Visual Studio 造成的),但不同的開發人員可能喜歡不同風格的窗體。WingIDE 是個很有前途的開發環境。
Vim
Vim 是高級文本編輯器,旨在提供實際的 Unix 編輯器'Vi'功能,支持更多更完善的特性集。Vim編輯器最重要的功能就是它不要求使用滑鼠(除了GUI版本外)。一開始,你可能會覺得這是個非常糟糕的做法,但是只要你投入時間——是的,這很花時間——學習快捷組合鍵,就可以大幅提升工作流的速度。Vim 不需要花費太多的學習時間,一旦你需要一個無縫的編程體驗,那麼就會把 Vim 集成到你的工作流中。
Eric5
Eric5 是一個集成了項目管理功能的 Python 集成開發環境。提供無限制數量的編輯器、集成的 Python Shell、集成調試器、集成對包括 Subversion 和 Mercurial 版本控制系統的支持。集成單元測試等等。可通過插件系統來進行功能擴展,與Eric4 相比,Eric5 是基於 Python 3 的變種。
⑼ python unicode編碼
python unicode編碼:
下面的代碼創建了一個Unicode字元串,用UTF-8編碼器將它編碼,然後寫入到一個文件中去,接著把數據從文件中讀回來,解碼成Unicode字元串對象,最後,列印出Unicode字元串,用以確認程序正確地運行。
在Linux中編寫,在VIM中輸入如下代碼,保存為uniFile.py
#/home/xiaopeng/python/code/uniFile.py
'''
:Writes
aUnicodestringtoafileinutf-8andreadsitbackin
'''
CODEC='utf-8'編碼方式
FILE='unicode.txt'要存的文件名
hello_out=u"Helloworld "創建了一個Unicode格式的字元串
bytes_out=hello_out.encode(CODEC)用UTF-8編碼
f=open(FILE,'w')
f.write(bytes_out)寫入指定文件中
f.close()
f=open(FILE,'r')
bytes_in=f.read()讀取
f.close()
hello_in=bytes_in.decode(CODEC)解碼
printhello_in列印
在終端中輸入:python uniFile.py
結果列印出 Hello world
然後在python目錄下會發現多了一個名為unicode.txt的文件,用cat命令查看一下,發現裡面的內容和列印的結果一樣.
把Unicode應用到實際中注意一下四點:
1程序中出現字元串時一定要加一個前綴u
2不要用str()函數,用Unicode()代替
3 不要用過時的string模塊。如果傳給它非ASCII碼,它會把一切搞砸。
4 不到必須時不要在你的程序里編解碼Unicode字元,只在你要寫入文件或者資料庫或者網路時,才調用encode()函數和decode()函數。
⑽ 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編碼就能節省空間。