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

news/2024/12/23 21:30:15/文章来源:https://www.cnblogs.com/madaao/p/18625061

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/857672.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vscode实现应用qss样式表

qss简介 qss(Qt Style Sheets)是一种基于CSS的样式语言,用于描述用户界面元素的外观和感觉。qss可以让用户在不修改代码的情况下,轻松地自定义应用程序的外观。 其语法基本如下: objectName{property: value; }其中,objectName是要设置样式的对象名,property是要设置的属…

【嵌入式开发】链接让你的程序在内存中找到正确位置

一、空间和地址分配 二、符号解析与重定位 三、静态库链接前面已经了解了ELF目标文件的内容,本篇文章的重点在于怎么将多个目标文件链接起来形成一个可执行文件。 现在链接器的链接过程主要分两步: 1、空间和地址分配 2、符号解析与重定位 下面来看一下,这两个步骤具体干了什…

校园二手交易平台UML图

类图:时序图: 买家买商品:买家撤回:用户更新:用户登录:卖家发布:用例图:

2 升力线理论

2 升力线理论 2.1 减阻 阻力 什么是阻力?阻力是阻止主要运动(位移向量)的力。 可以用一个简单的公式描述阻力: \[\begin{equation}\overrightarrow{R_2}-\overrightarrow{R_1}\propto\vec{T}-\vec{D} \end{equation} \]这里的R是反作用力(reactive force),T是推力(thru…

python网络编程之sse

服务端:from fastapi import FastAPI from fastapi.responses import StreamingResponse from fastapi.middleware.cors import CORSMiddleware import timeapp = FastAPI()# 允许所有来源的跨域请求 app.add_middleware(CORSMiddleware,allow_origins=["*"], # 允…

Array Collapse

前言 调 \(C\) 快魔怔了, 还是先来打这个 思路 方法 \(1\) : 笛卡尔树 看到这种类 \(\rm{RMQ}\) 问题直接一个笛卡尔树起手, 恰好 \(p\) 是不重的, 那么更方便了啊 搞出树树挖下性质 例如样例中的 4 2 4 1 3你注意到每次删除操作相当于选择一个键值段, 然后只保留这一段的根节点…

禅道bug增加自定义字段

禅道版本 18.9 需求 给禅道的bug模块,增加自定义字段。目前主要增加“发现阶段”、“所属环境”、“出现频率” 增加bug的类型 在bug列表增加搜索:“发现阶段”、“所属环境”、“出现频率” 在测试报告增加模块:“发现阶段”、“所属环境”、“出现频率”禅道开发手册 http…

php网络编程tcp

服务端:<?php $server = new Swoole\Server(127.0.0.1, 9501);$server->set([worker_num => 8, // worker进程数 cpu1-4倍max_request => 10000, // 根据内存定义 https://wiki.swoole.com/#/server/setting// open_eof_check => true,// package_eof => &…

php网络编程swoole websocket

服务端:<?php use Swoole\WebSocket\Server;// 创建 HTTP 服务器 $server = new Server(127.0.0.1, 8888, SWOOLE_PROCESS, SWOOLE_SOCK_TCP);$server->on(start, function ($server) {//print_r($server);echo "Swoole websocket server is started at ws://127.…

php网络编程swoole udp

服务端:<?php $server = new Swoole\Server(127.0.0.1, 9504, SWOOLE_PROCESS, SWOOLE_SOCK_UDP);$server->on(start, function ($server) {echo "UDP Server is started at udp://127.0.0.1:9504\n"; });$server->on(packet, function ($server, $data, …