Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;返回编解码器.charmap“u encode”;运行没有异常字符的python脚本时_Python_Windows_Encoding_Cmd_Python Idle - Fatal编程技术网

&引用;返回编解码器.charmap“u encode”;运行没有异常字符的python脚本时

&引用;返回编解码器.charmap“u encode”;运行没有异常字符的python脚本时,python,windows,encoding,cmd,python-idle,Python,Windows,Encoding,Cmd,Python Idle,我试图在CMD中运行我的脚本(它在空闲状态下工作正常),但出现以下错误: C:\Python34>rule90.py 回溯(最近一次呼叫最后一次): 文件“C:\Python34\rule90.py”,第15行,在 印刷品(c) 文件“C:\Python34\lib\encodings\cp850.py”,第19行,编码 返回codecs.charmap\u encode(输入、自身错误、编码\u映射)[0] UnicodeEncodeError:“charmap”编解码器无法对位置0-39中的

我试图在CMD中运行我的脚本(它在空闲状态下工作正常),但出现以下错误:

C:\Python34>rule90.py
回溯(最近一次呼叫最后一次):
文件“C:\Python34\rule90.py”,第15行,在
印刷品(c)
文件“C:\Python34\lib\encodings\cp850.py”,第19行,编码
返回codecs.charmap\u encode(输入、自身错误、编码\u映射)[0]
UnicodeEncodeError:“charmap”编解码器无法对位置0-39中的字符进行编码:字符映射到

虽然我在python方面的经验有限,但我认为我已经掌握了足够的知识来解决这个问题。第19行只是
linenew=str(''.join(lineA[numberneg:numberpos]))
,而我要加入的lineA由字符串形式的“0”和“1”组成。我确实有■ 及□ 字符,但它们应该是cmd中的默认字符,并且错误不在该行

任何帮助都将不胜感激

lineA = ['0','0','0','0','0','0','1','0','0','0','0','0','0']
lineB = lineA[:]
lineC = lineA[:]
lineC = ['□' if x=='0' else '■' for x in lineC]
counth = 0
max_counth = len(lineA) - 2
countv = 0
max_countv = len(lineA) / 2 - 1

while countv < max_countv:
    number = 1
    counth = 0
    lineCstr = map(str, lineC)    
    c = ''.join(lineCstr)
    print(c)
    while counth < max_counth:
        numberneg = number - 1
        numberpos = number + 2
        linenew = str(''.join(lineA[numberneg:numberpos]))
        if linenew == str('110') or linenew == str('100') or linenew == str('011') or linenew == str('001'):
            lineB[number] = '1'
            lineC[number] = '■'
        else:
            lineB[number] = '0'
            lineC[number] = '□'
        number = number + 1
        counth = counth + 1

    lineA = lineB[:]
    countv = countv + 1
input("Press Enter to continue...")
lineA=['0','0','0','0','0','0','1','0','0','0','0','0','0','0']
lineB=lineA[:]
lineC=lineA[:]
lineC=['□' 如果x=='0'其他'■' 对于第c行中的x]
counth=0
最大计数=len(lineA)-2
countv=0
最大计数v=len(lineA)/2-1
当countv

lineA
通常是一个较长的列表(25+个数字),但为了节省空间,我缩短了它。

我可以做一个假设。目前,这两个符号都是□' 而且■'- Unicode的符号。您可以得到如下十六进制代码:

import binascii
print (binascii.hexlify(bytes('□','UTF-8'))) #b'e296a1'
print (binascii.hexlify(bytes('■','UTF-8'))) #b'e296a0'
您可以找到Unicode表。 由于某些原因,您的控制台无法显示Unicode字符。但您可以在控制台编码中找到它们的等价物:

for i in range(256):
    print (i,chr(i))
记住每个方块的
i
值。然后您可以这样做:

BLACK_SQUARE = ord(some_integer_value)
WHITE_SQUARE = ord(some_integer_value)

lineC = [WHITE_SQUARE if x=='0' else BLACK_SQUARE  for x in lineC]

请发布脚本的完整代码。