首页 > 其他分享 >geoserver 上传sld文件后,格式变为ANSI,导致的一系列问题

geoserver 上传sld文件后,格式变为ANSI,导致的一系列问题

时间:2024-12-23 21:30:37浏览次数:7  
标签:格式 geoserver ANSI GEOSERVER sld HOME

windows平台下,以geoserver-2.21.5默认样式dem为例,在修改其中的某个值为中文后,出现报错:UTF-8序列的字节无效

先不管,点击保存后出现中文字体字符编码错误问题。

data_dir/styles找到对应的文件,发现sld文件变为ANSI格式(原是utf-8),

另存为UTF-8格式后,重新查看样式发现编辑框中显示的格式出现乱码,但能正常运行。

解决方案1:修改encoding 为GBK,文本框和图例恢复正常,但是sld文件仍然是ANSI格式。

ANSI在不同地区系统中表示含义不一致,简体中文 windows下ANSI为GBK编码,其他国家语言又是另一种,ANSI是一种编码规范,它的基础是ASCII码,其他国家自己制定编码规则加入到ANSI中,这导致不同语言ANSI码可能存在冲突。

但这只能说明geoserver 读取简体中文系统的(GBK)ANSI格式的sld不会出现乱码,但是utf-8格式存储的sld放到编辑框里确出现了乱码,说明编辑框中显示的编码规则与utf-8不一致,是按照系统默认字符编码规则去显示的。

解决方案2:由上面可知,geoserver将sld文件导出为了GBK(ANSI)格式,也就是说,可以通过声明java的导出编码格式来解决这个问题。参考:

https://gis.stackexchange.com/questions/417471/problem-with-geoserver-sld-style-encoding-utf-8-chars

https://gis.stackexchange.com/questions/371140/unicode-problem-in-creating-style-with-rest-api-on-geoserver/371418#371418

在startup.bat 文件前面声明环境变量:

JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8

注意windows 和linux 的写法。此时再去看原先的dem样式,发现编辑器中出现乱码,修改后保存,查看预览和实际文件,正常(样式文件已为utf-8)

完整的bat文件

echo Temporarily setting GEOSERVER_HOME AND JAVA_HOME to the following directory:
cd ..
set JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
set GEOSERVER_HOME=%CD%
echo GEOSERVER_HOME: %GEOSERVER_HOME%
set GEOSERVER_DATA_DIR=%GEOSERVER_HOME%\data_dir
echo GEOSERVER_DATA_DIR: %GEOSERVER_DATA_DIR%
set JAVA_HOME=%GEOSERVER_HOME%\jdk1.8.0_431
echo JAVA_HOME: %JAVA_HOME%
cd bin
echo.
call startup.bat
pause

标签:格式,geoserver,ANSI,GEOSERVER,sld,HOME
From: https://www.cnblogs.com/madaao/p/18625061

相关文章

  • 实践项目-Ansible+Playbook自动化部署服务器上线
    (241223)环境系统ip主机名域名debian12.8192.168.100.6ansible-mainansible-main.example.comdebian12.8192.168.100.12ansible-node1ansible-node1.example.comdebian12.8192.168.100.15ansible-node2ansible-node2.example.comdebian12.8192.168.......
  • SLD 中 ColorMap的 type属性
    SLD中ColorMap的type属性在ColorMap中,type属性定义了渲染方式,有以下几种类型:1.ramp含义:使用颜色渐变表示数据值的范围。特性:渐变效果是连续的,数据值之间的颜色平滑过渡。适用于连续数据(如温度、海冰浓度等)。示例:<ColorMaptype="ramp"><ColorMapEnt......
  • Ansible:一键部署Keepalived高可用集群
    使用Ansible工具一键部署Keepalived服务1.需求分析使用ansible部署keepalived服务的过程中,需要实现:1.1多系统支持根据不同的系统,自动选择对应的安装方式。可通过相关的环境变量结合 when实现。1.2源码安装考虑到rpm安装的方式会需要依赖一些基础环境,以及版本较低,将采用源......
  • 自动化工具ansible部署和实践
    1介绍和部署1.1介绍ansible的功能我爱你在当今的IT自动化领域,Ansible无疑是一个无法被忽视的重要角色。其便利性和高效性受到了广大开发者和系统管理员的一致好评,成为了配置管理和应用部署的首选工具。然而,对于一些初学者来说,Ansible的概念和架构可能会显得有些复杂和难......
  • 【转载】Ansible - 基础应用
    原作:https://www.cnblogs.com/keerya/p/7987886.htmlansible自动化运维工具实现了批量系统配置、批量程序部署、批量运行命令等功能。 使用yum安装我们需要先安装一个 epel-release 包,然后再安装我们的ansible即可。yuminstallepel-release-yyuminstallans......
  • Windows ANSI API 是指 Windows 操作系统 提供的一组 应用程序编程接口 (API),它们使用
    WindowsANSIAPI是指Windows操作系统提供的一组应用程序编程接口(API),它们使用ANSI字符集来处理字符串和文本数据。ANSI字符集是较为老旧的字符编码标准,通常对应的是Windows-1252编码(又称Latin-1)。这些API主要用于与字符串和字符数据交互。1. WindowsANSI......
  • 【YashanDB知识库】用yasldr配置Bulkload模式作单线程迁移300G的业务数据到分布式数据
    问题描述详细版本:YashanDBServerEnterpriseEditionRelease23.2.4.100x86_646db1237影响范围:离线数据迁移场景,影响业务数据入库。外场将部分NewCIS的报表业务放到分布式数据库,验证SQL性能水平。操作系统环境配置:125G内存32CCPU2T的HDD磁盘问题出现的步骤/操作:1、......
  • Rocky 9 的ansible中没有mount模块
    报错Themodulemountwasredirectedtoansible.posix.mount,whichcouldnotbeloaded.[root@master-61~]#ansibletest-mmount-a'src=172.16.1.31:/datapath=/usr/share/nginx/htmlfstype=nfsopts=defaultsstate=mounted'172.16.1.110|FAILED!=&g......
  • 题解:AT_abc296_e [ABC296E] Transition Game
    题目传送门思路我们可以在环中任选一点,然后在环内可以转到另一个点。因为起点自由选择,所以环中每个点都可以到达,由此我们可以得知环上的所有点都是必胜点。我们把这个问题抽象为一张图,用拓扑排序判环即可。AC代码#include<bits/stdc++.h>usingnamespacestd;usingll=l......
  • Ansible Playbook 简介
    你每做一件事,相当于扮演了一个角色,你必须剧本,做什么,该怎么做,做事的流程Playbook是ansible用于配置,部署,和管理被控节点的剧本。通过Playbook的详细描述,执行其中的一系列tasks,可以让远端主机达到预期的状态。playbook就像Ansible控制器给被控节点列出的的一系列......