http - 我的字符串有特殊字符,http/template 的输出添加了“(MISSING)”
问题描述
我试图建立一个小型网站,我使用 html/模板来创建动态页面。页面上的一件事是这些 url 中的 URL 列表,有时我需要字符编码。对于像 ô (%C3%B4) 这样的特殊字符。
当我尝试使用 html/template 将变量解析到页面中时,我得到以下结果:%!c(MISSING)3%!b(MISSING)4。我不知道这里有什么问题
type Search_list struct {
Search_name string
Search_url string
Search_price float64
}
func generateSearchPage(language int, q string) (string, error) {
/* ommited, fetshing data from elasticsrearch*/
sl := []Search_list{}
var urle *url.URL
//looping through ES results and putting them in a custom List
for _, res := range data.Hits.Hits {
//
//Encode Url
var err error
urle, err = url.Parse(res.Source.URL)
if err != nil {
continue
// TODO: add log
}
//I've tried already the following:
fmt.Println(res.Source.URL) //ô
fmt.Println(url.QueryUnescape(res.Source.URL)) //ô
fmt.Println(urle.String()) //%C3%B4
u, _ := url.QueryUnescape(res.Source.URL)
sl = append(sl, Search_list{res.Source.Name, u, res.Source.Price})
}
var buffer bytes.Buffer
t := template.New("Index template")
t, err = t.Parse(page_layout[language][PageTypeSearch])
if err != nil {
panic(err)
}
err = t.Execute(&buffer, Search_data{
Title: translations[language]["homepage"],
Page_title: WebSiteName,
Listed_items: sl,
})
if err != nil {
panic(err)
}
return buffer.String(), nil // %!c(MISSING)3%!b(MISSING)4
}
解决方案
@Moshe Revah 感谢您的帮助,同时我发现了错误
稍后在代码中,我将生成的页面发送到 http 客户端
fmt.Fprintf(w, page) // Here was the error b/c of the % symbols
我只是将其更改为
fmt.Fprint(w, page)
它完美无缺
推荐阅读
- javascript - 如何发布同时具有 commonjs 和 es6 版本的 NPM 模块?
- cassandra - Cassandra中的数据模型和正确的删除策略
- python - python os.path.isfile() 对某些整数返回 True
- javascript - 生成一堆完美打包的随机 ngons
- ruby-on-rails - 如何让 Capybara 找到一个快速出现和消失的元素(加载微调器)
- ansible - 使用 ansible 成为另一个用户
- python - 我需要帮助尝试通过 tkinter 创建 gui 的前端界面
- ios - 如何在使用 SwiftUI 的同时导航到视图控制器?
- apache-spark - 根据 pyspark 中的条件查找 json 列表中的总和
- ios - 初始化'dispatch_source_t'(又名'NSObject)的不兼容指针类型
*') 类型为 'NSString *' 的表达式