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

Next.js中Axios请求含波斯语关键词时的报错问题

解决Next.js波斯语关键词搜索的URL编码错误

问题根源

非ASCII字符(如波斯语)直接作为URL参数传递时,不符合URL的ISO-8859-1编码规范,导致Next.js的RSC在处理fetch请求时抛出错误,进而触发页面无限刷新。

解决方案

对搜索关键词进行URL编码,使用encodeURIComponent()函数将非ASCII字符转换为符合URL规范的编码格式。

代码修改步骤

  • 初始化keyword时,对url.keyword进行编码后再拼接参数
  • 用户输入关键词时,同样对输入值编码后更新state,确保URL参数格式合法

修改后的代码

const [result, setResult] = useState([]);
// 初始化时对关键词做URL编码处理
const [keyword, setKeyword] = useState(url.keyword ? `&keyword=${encodeURIComponent(url.keyword)}` : "");

useEffect(() => {
  axios
    .get(`https://example.com/api/search-posts?${keyword}`)
    .then((d) => {
      setResult(d.data.allPosts);
    })
    .catch((e) => console.log("error", e));
}, [pn, keyword]);

// 处理用户输入的关键词时也要编码
const handleSearchInput = (inputValue) => {
  const encoded = inputValue ? `&keyword=${encodeURIComponent(inputValue)}` : "";
  setKeyword(encoded);
};

额外说明

encodeURIComponent()会自动将所有非ASCII字符、特殊字符转换为URL安全的编码格式,符合RFC标准。大部分后端框架(如Node.js/Express、Python/Django)会自动解码这类参数,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:04:59