Unicode 模式(Python) - IBM

文章推薦指數: 80 %
投票人數:10人

Python 從IBM SPSS Statistics 收到的字串會從UTF-8 轉換為Python Unicode ,即UTF-16。

... 下列範例示範部分此行為及 u() 函數的用法。

set unicode on ... Unicode模式(Python) 當IBM®SPSS®Statistics處於Unicode模式時(由SET指令的UNICODE次指令控制),當透過spss模組提供的函數傳遞及接收字串時,會自動完成下列轉換: Python從IBMSPSSStatistics收到的字串會從UTF-8轉換為PythonUnicode,即UTF-16。

從Python傳遞至IBMSPSSStatistics的字串會從UTF-16轉換為UTF-8。

附註:在OMS要求期間變更語言環境及/或Unicode設定可能會導致不正確地轉碼文字。

指令語法檔案 在Unicode模式下使用指令語法檔案時必須特別小心。

具體而言,指令語法檔中使用的Python字串文字需要明確表示為UTF-16字串。

最好使用spssaux模組(隨IBMSPSSStatistics-EssentialsforPython一起安裝)中的u()函數來完成此作業。

此函數具有下列行為: 如果IBMSPSSStatistics處於Unicode模式,則輸入字串會轉換為UTF-16。

如果IBMSPSSStatistics不是Unicode模式,則會傳回未變更的輸入字串。

附註:如果指令語法檔案中的字串文字僅由一般羅馬字元(7位元ascii)組成,則不需要u()函數。

下列範例示範部分此行為及u()函數的用法。

setunicodeonlocale=english. BEGINPROGRAM. importspss,spssaux fromspssauximportu literal="âbc" try: print"literalwithoutconversion:",literal except: print"can'tprintliteral" try: print"literalconvertedtoutf-16:",u(literal) except: print"can'tprintliteral" ENDPROGRAM. 結果如下: literalwithoutconversion:can'tprintliteral literalconvertedtoutf-16:âbc 截斷Unicode字串 在Unicode模式下工作時,請使用spssaux模組(隨IBMSPSSStatistics-EssentialsforPython安裝)中的truncatestring函數,將字串正確地截斷為指定的字串長度上限(以位元組為單位)。

這對於截斷字串以用作IBMSPSSStatistics變數名稱(容許的長度上限為64個位元組)特別有用。

truncatestring函數採用兩個引數--要截斷的字串,以及位元組數上限,這是選用的,預設為64。

例如: importspss,spssaux newstring=spssaux.truncatestring(string,8) 上層主題:使用Python程式區塊 相關資訊 Python程式區塊的基本規格 巢狀程式區塊(Python)



請為這篇文章評分?