fish2018/pansou · error
[ ] GBK 编码搜索关键词失败
Error message
[%s] GBK 编码搜索关键词失败: %w
What it means
gbkQueryEscape failed to GBK-encode the yulinshufa search keyword. The site requires GBK query encoding; encoding fails for runes unrepresentable in GBK (e.g. emoji or rare characters) or a bad rune in the input.
Solutions
- Sanitize the keyword to GBK-encodable runes
- Fall back to UTF-8 escaping or drop the offending characters
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at plugin/yulinshufa/yulinshufa.go:170 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of fish2018/pansou@beaa561337 (2026-09-07).
Data as JSON: /api/errors/fc996e2c46f9932c.
Report an issue: GitHub.
Appendix: source
Thrown at plugin/yulinshufa/yulinshufa.go:170
results := p.fetchDetailResults(items)
validResults := make([]model.SearchResult, 0, len(results))
for _, res := range results {
if len(res.Links) == 0 {
p.debugf("结果[%s] 无有效链接, 已跳过", res.UniqueID)
continue
}
validResults = append(validResults, res)
}
p.debugf("有效结果数量: %d(原始 %d)", len(validResults), len(results))
return plugin.FilterResultsByKeyword(validResults, keyword), nil
}
// fetchSearchItems 请求搜索页面并解析列表
func (p *YulinshufaPlugin) fetchSearchItems(client *http.Client, keyword string) ([]searchItem, error) {
encodedKeyword, err := gbkQueryEscape(keyword)
if err != nil {
return nil, fmt.Errorf("[%s] GBK 编码搜索关键词失败: %w", p.Name(), err)
}
searchURL := fmt.Sprintf(baseURL+searchPath, encodedKeyword)
ctx, cancel := context.WithTimeout(context.Background(), requestTimeout)
defer cancel()
p.debugf("请求搜索URL: %s", searchURL)
req, err := http.NewRequestWithContext(ctx, http.MethodGet, searchURL, nil)
if err != nil {
return nil, fmt.Errorf("[%s] 创建搜索请求失败: %w", p.Name(), err)
}
p.decorateCommonHeaders(req)
resp, err := p.doRequestWithRetry(client, req, requestMaxRetries)
if err != nil {
return nil, fmt.Errorf("[%s] 搜索请求失败: %w", p.Name(), err)
}
defer resp.Body.Close()
View on GitHub (pinned to beaa561337)