在.NET中使用多字节字符限制URL编码字符串的长度

the*_*tgt 5 .net truncate urlencode multibyte

我正在使用.NET,我需要截断一个可能包含多字节字符的字符串,以便在URL编码后它不会超过设定的长度.这似乎是内置的东西,但我找不到它.

一旦它被URL编码,我只会做一个子字符串,但这可能会取消编码字符的一部分(空格变为%20,如果它在最后它可能被截断为%2,这是无效的),或者多字节字符的一部分会被截断(π被编码为%CF%80,它可能被截断为%,%CF,%CF%8,所有这些都是错误的).

Mus*_*sis 1

我的快速谷歌搜索没有找到任何与此相关的内容,这有点令人惊讶,因为这似乎是一个相对常见的问题(至少对于那些不避免使用过长网址的人来说)。

您可以在对字符串进行编码的地方迭代地执行此操作,如果编码的字符串太长,您可以从原始字符串中删除一个字符并重新编码,并继续执行此操作,直到编码的字符串足够短。这显然不会有很好的性能。