日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python代码编码成jni_python 设置文件编码格式的实现方法

發布時間:2023/12/10 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python代码编码成jni_python 设置文件编码格式的实现方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果要在python2的py文件里面寫中文,則必須要添加一行聲明文件編碼的注釋,否則python2會默認使用ASCII編碼。(python3已經沒有這個問題了,python3默認的文件編碼是UTF-8)

必須將編碼注釋放在第一行或者第二行,一般來說,Python文件的前兩行要這樣寫:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

其中第一行是指定python解釋器,第二行是指定python文件編碼方式,設置編碼方式有以下可選的方法

1. 帶等號的設置方法:

#!/usr/bin/python

# coding=

2. 最常見的,帶冒號的(大多數編輯器都可以正確識別的):

#!/usr/bin/python

# -*- coding: -*-

3. vim的:

#!/usr/bin/python

# vim: set fileencoding= :

設置頭部的編碼聲明有以下幾個作用:

如果代碼中有中文注釋,就需要此聲明

比較高級的編輯器(比如我的emacs),會根據頭部聲明,將此作為代碼文件的格式。

程序會通過頭部聲明,解碼初始化 u”人生苦短”,這樣的unicode對象,(所以頭部聲明和代碼的存儲格式要一致)

設置默認解碼格式

import sys #引用sys模塊進來,并不是進行sys的第一次加載

reload(sys) #重新加載sys

sys.setdefaultencoding('utf8') ##調用setdefaultencoding函數

這里特別注意的是第二行的reload(sys),這個一定不能少,少了的話就不能正確運行。那么為什么要重新加載,而直接引用過來則不能調用該函數呢?因為setdefaultencoding函數在被系統調用后被刪除了,所以通過import引用進來時其實已經沒有了,所以必須reload一次sys模塊,這樣setdefaultencoding才會為可用,才能在代碼里修改解釋器當前的字符編碼。

在python安裝目錄的Lib文件夾下,有一個叫site.py的文件,在里面可以找到main() –> setencoding()–>sys.setdefaultencoding(encoding),因為這個site.py每次啟動python解釋器時會自動加載,所以main函數每次都會被執行,setdefaultencoding函數一出來就已經被刪除了。

關于 sys.defaultencoding,這個在解碼沒有明確指明解碼方式的時候使用。比如我有如下代碼:

#! /usr/bin/env python

# -*- coding: utf-8 -*-

s = '中文' # 注意這里的 str 是 str 類型的,而不是 unicode

s.encode('gb18030')

這句代碼將 s 重新編碼為 gb18030 的格式,即進行 unicode -> str 的轉換。因為 s 本身就是 str 類型的,因此

Python 會自動的先將 s 解碼為 unicode ,然后再編碼成 gb18030。因為解碼是python自動進行的,我們沒有指明解碼方式,python 就會使用 sys.defaultencoding 指明的方式來解碼。很多情況下 sys.defaultencoding 是

ANSCII,如果 s 不是這個類型就會出錯。拿上面的情況來說,我的 sys.defaultencoding 是 anscii,而 s 的編碼方式和文件的編碼方式一致,是 utf8 的,所以出錯了:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position

0: ordinal not in range(128)

對于這種情況,我們有兩種方法來改正錯誤:

一是明確的指示出 s 的編碼方式

#! /usr/bin/env python

# -*- coding: utf-8 -*-

s = '中文'

s.decode('utf-8').encode('gb18030')

二是更改 sys.defaultencoding 為文件的編碼方式

#! /usr/bin/env python

# -*- coding: utf-8 -*-

import sys

reload(sys) # Python2.5 初始化后會刪除 sys.setdefaultencoding 這個方法,我們需要重新載入

sys.setdefaultencoding('utf-8')

str = '中文'

str.encode('gb18030')

以上這篇python 設置文件編碼格式的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持聚米學院。

總結

以上是生活随笔為你收集整理的python代码编码成jni_python 设置文件编码格式的实现方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。