shp 文件中文编码
最近在发布 shp 文件服务、读写 shp 文件时经常遇到了关于属性字段中有中文的问题。
一、cpg 文件
1、来源
在ArcGIS10.2 以前是没有这个文件的。
为什么增加了这个文件?
应该是由于 shp 格式加入了对等宽字符的支持,导致有段时间 shp 文件和 ArcGIS 对字符的支持存在不匹配。
ArcGIS 还专门出了对 ArcGIS10.2 的补丁,在官网可以下载到补丁文件。下载地址,搜索:Shapefile Default Code Page Patch 就可以找到补丁文件。
在 ArcGIS 10.2 以后,新建的 shp 文件都带了 .cpg 文件。
2、作用
该文件就是存储文件的编码。而且只存储这个,所以文件内容比较简单。
如下图,就是一个 cpg 文件的内容。
3、没有 cpg 文件
对于没有该文件的 shp 为了编码问题,可以自己创建。
文本输入对应编码(和文件编码保持一致),保存和 shp 同名文件,修改文件后缀为 .cpg 即可。
创建这个文件在 ArcGIS10.2 以后的软件都可以正常使用。
针对 GeoServer、QGIS 使用还有其他问题。
二、GeoServer 编码
虽然有 cpg 文件,GeoServer 是无法读取的,所以在 GeoServer 发布 shp 文件时,新建“数据存储”时要选择对应的编码,否则会乱码。
如下图所示:
三、QGIS 编码
QGIS 在有 cpg 文件的情况下是可以读取到对应的编码的。
当没有 cpg 文件时,QGIS 里面是可以手动选择编码方式,只要和文件的编码方式一致也能正确显示中文:
提示:
在遇到乱码问题时,使用文本打开 dbf 文件,如果中文能够正常显示说明文件编码是支持中文的。这时就要设置好当前查看软件编码。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端