Go Web应用模板展示国旗图片时src含%0A的问题求助
解决Go模板中国旗图片URL出现%0A的问题
你遇到的%0A其实是换行符的URL编码,问题根源出在从ipinfo.io获取国家代码的步骤里:ioutil.ReadAll(resp3.Body)会把响应里的所有字节(包括接口返回内容末尾的换行符)全部读出来,转成字符串后自然带着换行,模板渲染时这个换行符就会被编码成%0A,导致图片路径错误。
下面给你两种简单的解决办法:
方法一:用strings.TrimSpace()清理空白字符
这是最通用的方式,它会去掉字符串两端所有的空白字符(包括换行、空格、制表符等):
import "strings" // ... resp3, err := http.Get("https://ipinfo.io/country") if err != nil { fmt.Println(err) // 建议这里添加错误兜底逻辑,比如设置默认国家代码 country = "US" } defer resp3.Body.Close() // 务必关闭响应体,避免HTTP连接泄漏 bytes3, _ := ioutil.ReadAll(resp3.Body) country := strings.TrimSpace(string(bytes3))
方法二:精准移除末尾的换行符
如果你确定接口返回的内容只有末尾带换行,可以用strings.TrimSuffix()精准清理:
import "strings" // ... bytes3, _ := ioutil.ReadAll(resp3.Body) country := strings.TrimSuffix(string(bytes3), "\n") // 兼容可能存在的回车符(部分接口会返回\r\n) country = strings.TrimSuffix(country, "\r")
处理后的country变量就不会带有换行符了,模板渲染出来的图片路径会变成预期的images/BE.png,国旗就能正常加载啦。
内容的提问来源于stack exchange,提问作者joske123
相关产品推荐
相关产品推荐

