Cod*_*cat 1 c# url uri .net-4.0
如果我尝试在带有重音字符的函数中添加URL,例如"Percepção",则输出"Percep%C3%A7%C3%A3o",这不能正常工作.但是,"Percep%e7%e3o"确实按预期方式工作.
String Result = Uri.EscapeUriString("Percepção");
Run Code Online (Sandbox Code Playgroud)
提前致谢.
首先将字符串编码为UTF-8,然后将字节转换为文字字符或百分比编码序列.
通过比较结果可以看出EscapeUriString
:
Console.WriteLine(BitConverter.ToString(Encoding.UTF8.GetBytes("Percepção")));
// 50-65-72-63-65-70-C3-A7-C3-A3-6F
Run Code Online (Sandbox Code Playgroud)
标准是RFC3986,其中规定:
当新的URI方案定义表示由通用字符集[UCS]中的字符组成的文本数据的组件时,应首先根据UTF-8字符编码[STD63]将数据编码为八位字节; 那么只有那些与未保留集中的字符不对应的八位字节应该是百分比编码的.
(另外,请注意,使用Uri.EscapeDataString
它通常比使用更合适Uri.EscapeUriString
.)