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

  1. Sanitize the keyword to GBK-encodable runes
  2. 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)