在利用到ArcGIS JS API进行开发的过程中,几个Task(比如query和find)中会用到outFields属性,主要就是来给开发人员定制一些属性表中需要被返回的字段。在返回的结果(featureSet,findResults等 )中,可以从graphic的attributes属性中来拿到它们。可悲的是,在打过SP1补丁后,只要结果中有中文(不管是字段名还是值),一律变为乱码。。火星文。。。(不打sp1补丁可以正常显示中文,但无法进行中文的查询)
ESRI也很非主流。。。
因为在网上没有看到更好的,所以就在这里分享下关于这个问题的解决方案。
1.备份<arcgis dir>\java\web_output\rest文件夹.(这个文件夹没有被打过sp1补丁)
2.升级ArcGIS Server 9.3到sp1。(其他诸如desktop,sde也到同步到sp1)
3.用原有的rest文件夹替换打过sp1补丁后的rest文件夹
注:如果已经升级到了sp1而面临这个乱码问题也不要紧,找台没有升级到sp1的或者重新在另一台机子上安装ags server 9.3,再把rest文件夹拷贝过来。这个时候要注意,别忘了修改拷贝过来<rest>\WEB-INF\classes \server.properties文件,把主机名用户名,密码等都改为自己的本地环境(密码要用编码后的字符串)。
或者把自己的server.properties文件保留下来。
4.打开两个文件:
<arcgis dir>\java\manager\service\tomcat\managerappserver\conf \server.xml
<arcgis dir>\java\manager\service\tomcat\managerserver\conf \server.xml
找到所有"Connector"元素,添加一个属性 :URIEncoding="UTF-8"。例如:
<ConnectorURIEncoding="UTF-8"port="8099" ……
5.重启SOM,SOC服务。完成,鈥★魰从此远去……:)
最近在写一套用来实现地图服务的Javascript框架,基于ags js api和dojo的。非常希望和同样用ags js api开发的朋友们一起讨论。