WebAPI解析查询参数中Unicode字符显示为问号的问题解决
问题解决办法
ASP.NET Core WebAPI 默认已经支持 Unicode 字符的查询参数解析,不需要额外修改接口解码逻辑,也不需要对请求做特殊处理。
你观察到的 search 参数显示为 ???? 属于控制台输出编码异常,并非参数解析错误:默认情况下Windows控制台的输出编码不是UTF-8,无法正常渲染西里尔文、中文、希腊文等非ASCII字符,就会显示为问号。
修复步骤
在 Program 类的 Main 方法入口处添加控制台输出编码配置即可:
using System.Text; public static void Main(string[] args) { // 加在方法最开头 Console.OutputEncoding = Encoding.UTF8; // 原有启动逻辑 CreateHostBuilder(args).Build().Run(); }
配置完成后重新启动项目,控制台输出的参数就会正常显示Unicode字符。
验证方式
如果需要确认参数是否真的解析正确,可以打断点直接调试查看内存中的search变量值,该值不受控制台编码影响,可直观判断是否解析正常。
内容的提问来源于stack exchange,提问作者Milan
相关产品推荐
相关产品推荐

