Python练习遇UnicodeEncodeError:charmap无法编码◄字符求助
问题描述
运行练习代码时触发UnicodeEncodeError错误,具体错误信息:
Exception has occurred: UnicodeEncodeError
'charmap' codec can't encode character '\u25c4' in position 276398: character maps to
文件"C:\Users\Faizan\My Drive\Python\Practice_files\dice_visual.py"第30行:
offline.plot({'data': data, 'layout': my_layout}, filename='d6_d6.html')
完整代码如下:
from plotly.graph_objs import Bar, Layout from plotly import offline from die import Die #Create two D6 dice die_1 = Die() die_2 = Die() #Make some rolls, and store results in a list results = [] for roll_num in range(1000): result = die_1.roll() + die_2.roll() results.append(result) #Analyze the results frequencies = [] max_result = die_1.num_sides + die_2.num_sides for value in range(2, max_result+1): frequency = results.count(value) frequencies.append(frequency) #Visulaize the results x_values = list(range(2, max_result+1)) data = [Bar(x=x_values, y=frequencies)] x_axis_config = {'title': 'Result', 'dtick':1} y_axis_config = {'title': 'Frequency of Result'} my_layout = Layout(title='Result of rolling two D6 dice 1000 times', xaxis=x_axis_config, yaxis=y_axis_config) offline.plot({'data': data, 'layout': my_layout}, filename='d6_d6.html')
解决方案
这个错误是Windows系统默认编码(charmap)无法处理plotly生成的HTML文件中的特殊字符(\u25c4是左指向三角符号)导致的,直接在offline.plot调用中指定UTF-8编码即可解决:
修改第30行代码为:
offline.plot({'data': data, 'layout': my_layout}, filename='d6_d6.html', encoding='utf-8')
原理:UTF-8编码支持所有Unicode字符,指定后plotly会用UTF-8编码写入HTML文件,避免charmap编码的局限性。
若die.py文件存在编码异常,也需确保它保存为UTF-8格式,但从错误位置判断,核心问题出在HTML文件写入环节,优先修改offline.plot的encoding参数即可。
内容的提问来源于stack exchange,提问作者faizan masood
相关产品推荐
相关产品推荐

