You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Flask-Folium中添加GeoJson数据时遭遇UnicodeDecodeError错误

解决Folium加载GeoJson时的UnicodeDecodeError错误

问题详情

报错信息:

UnicodeDecodeError: 'charmap'编解码器无法解码位置100657处的字节0x9e:字符映射到<未定义>

在向Folium地图添加GeoJson数据时触发该错误,使用的代码如下:

from flask import Flask,render_template
import folium
import os

app = Flask(__name__)

    
@app.route("/")
def index():
    return render_template("index.html")
@app.route("/map")
def map():
    d = os.path.dirname(os.path.abspath(__file__))
    m = folium.Map(location=[39.92121147768605,32.81907498836517], zoom_start=2, tiles="Stamen Terrain")
    
    TurkiyeBorder = {
        "color " : "Black",
        "weight" : 0.2,
        "fillColor" : "Blue"        
    }
    
    Ankara_data = d + "/Ankara/Ankara.geojson"
    folium.GeoJson(Ankara_data , name = "Ankara", style_function=lambda x:TurkiyeBorder).add.to(m)
    folium.LayerControl().add_to(m)
    
    m.save("map.html")
    return m._repr_html_()

if __name__ == "__main__":
    app.run(debug=True) 

修复方案

这个错误是因为Python默认使用系统编码读取文件,而你的GeoJson文件包含非ASCII特殊字符(比如土耳其语字符),导致编码不匹配。同时代码里还有一处语法错误,一起修复:

1. 修正编码问题

显式指定UTF-8编码打开GeoJson文件,再传入folium.GeoJson:

Ankara_data = d + "/Ankara/Ankara.geojson"
# 用utf-8编码打开文件
with open(Ankara_data, 'r', encoding='utf-8') as f:
    folium.GeoJson(f, name="Ankara", style_function=lambda x:TurkiyeBorder).add_to(m)

2. 修正语法错误

原代码里的.add.to(m)是错误写法,应该改为.add_to(m),否则会触发属性错误。

内容的提问来源于stack exchange,提问作者Mehmet Aksungur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:15:15