arcpy.AddMessage()在工具箱的运行结束窗口中,中文显示乱码的解决办法

1.问题描述

我在编写脚本的时候,中文显示总是乱码,今天终于找到解决办法了,现记录下来与大家分享。

2.运行环境

  • 版本:Arcgis10.8.2
  • python2.7.16(如下所示)
Python 2.7.16 (v2.7.16:413a49145e, Mar  4 2019, 01:30:55) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license()" for more information.

3.运行报错

我在arcmap的脚本工具时,脚本中的中文显示代码,如下图所示
在这里插入图片描述
可以看到有的中文可以正常显示,有的不能正常显示。

解决方法:

废话不多说直接上代码

#!/usr/bin/env python2.7
#coding:cp936  #我测试了,删除了也可以正常显示中文
import arcpy
##------------以下很重要-----------
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
##------------以上很重要----------
# Script arguments
ftClasses =["!!!1","sdsd","要删除图层4"]
for ftClass in ftClasses:
	#以下代码注意编码形式
    arcpy.AddMessage("{0} 图层已被清空!".format(ftClass.encode('utf-8')))
#arcgis 10.8 可以正常显示
arcpy.AddMessage("数据库图层已经被清空!")

我要说的以下这点很重要:
如果没有其他编写代码的工具,用文本文档的形式打开上述写完的代码,然后【另存为】,编码选择【ANSI】,保存的后缀为.py格式,如下图所示:*
在这里插入图片描述

将编写好的脚本添加到工具箱中,因为是测试我就没有传参。
在这里插入图片描述
在这里插入图片描述

至此将脚本工具添加到arcmap的工具箱中运行即可成功显示中文!!!
最终运行结果如下图所示:
在这里插入图片描述

希望本文可以帮到大家,到此问题得以解决!!

小结

  • 1.一定要注意文件保存时候的编码,这将决定中文能不能正常显示;
  • 2.在代码的开头添加coding,到底管不管用,仁者见仁智者见智,反正我觉得像是注释的功能!
  • 3.中文乱码真的很头疼,有没有需要补充的,欢迎留言讨论!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

激动的兔子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值