簡體   English   中英

UnicodeEncodeError:腳本在Spyder和IDLE上運行,但不在cmd提示符下運行

[英]UnicodeEncodeError: Script runs on Spyder and IDLE, yet not on cmd prompt

我手頭有一個工作腳本,盡管它在Spyder IDE和python shell上運行,但是只要我雙擊運行它,它就會立即關閉。 為了理解該問題,我通過cmd提示符運行了它,並遇到了以下問題:

Traceback (most recent call last):
File "C:\Users\Cheese\Desktop\demografik-proje\demo-form-v-0-1-3.py", line 314, in <module>
mainMenu(q_list, xtr_q_list)
File "C:\Users\Cheese\Desktop\demografik-proje\demo-form-v-0-1-3.py", line 152, in mainMenu
patient_admin = input("Testi uygulayan ki\u015fi: ") #the person who administrated the test
File "C:\Program Files\Python35\lib\encodings\cp850.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character '\u015f' in position 18: character maps to <undefined>

這個問題以前已經被問過很多次了,但是為什么我要問的是,該腳本在某些計算機上可以正常工作,只需雙擊即可,但在我的計算機上卻不起作用。 從我收集到的信息來看,這可能與我的計算機是英語但可以運行的計算機是土耳其語有關嗎?

另外,由於程序中有許多土耳其語字符串,所以我不想擺弄每個單獨的字符串,而寧願放在頂部或其他東西。 我什至准備設置一個批處理文件以在UTF8中運行腳本。 或者,如果我可以凍結它以識別UTF8(最好使用)的方式? 另外,我剛剛檢查了一下,如果刪除了所有土耳其字符,程序運行正常。 如預期的那樣。

如果有幫助,Spyder仍然可以運行Python 3.5.1,我已經安裝了3.5.2,當我在命令提示符下鍵入“ python”時,Python 3.5.2運行得很好。

以下是代碼,如果有幫助的話:

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

"""
Block o' Code
"""
    patient_admin = input("Testi uygulayan kişi: ") #the person who administrated the test

    #gets input for all the data program needs    
    print("=======================================")
"""
More block o' code
"""

好的,找到了解決方案,想知道我是如何錯過這個的(考慮到我試圖在2-3小時內弄清楚這個)。

要使用非ASCII字符串運行程序,可以更改命令提示符的代碼頁。 為此,請執行以下操作:打開Windows“控制面板”,選擇“區域和語言”,然后單擊“管理”選項卡。在“非Unicode程序的語言”下,單擊“更改系統語言環境”。選擇語言環境(對於我的情況為土耳其語),單擊“確定”。

它會重新啟動計算機,然后,程序應該可以正常工作。

來源: http//knowledgebase.progress.com/articles/Article/4677

input帶有字符串參數的input會執行print ,而臭名昭著的是PrintFails

Windows命令提示符在Unicode下無可避免地被破壞了。 您可以將其使用的代碼頁更改為包含要打印的字符的代碼頁,例如,在運行Python腳本之前,對舊土耳其語編碼代碼頁1254使用命令chcp 1254 通過設置“非Unicode程序的語言”,您可以將此代碼頁設置為所有命令提示符的默認值。

但是,如果您需要使用1254中不存在的字符,這仍然會失敗。理論上,@ PM2Ring建議您可以使用代碼頁65001(幾乎為UTF-8),但實際上,Windows中的長期存在的錯誤此代碼頁的實現通常使其無法使用。

您也可以嘗試安裝win-unicode-console模塊,該模塊嘗試解決Windows命令提示符問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM