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.中文乱码真的很头疼,有没有需要补充的,欢迎留言讨论!!