2011-02-03 71 views
5

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

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

+0

你问如何在给定长度截取字符串,或者是你问如何自动做呢?第一个问题的答案是longString.Substring(0,maxLength)。 – Kendrick 2011-02-03 17:19:17

+0

@Kendrick:我认为这个问题是,你真的不知道一个字符串要去多久是其urlencoded的形式,直到你真正用urlencode它,因为在原来的(又名多字节字符)一些字符将需要超过urlencoded版本中的一个字节。 – MusiGenesis 2011-02-03 17:26:23

回答

1

我的快速谷歌搜索不转了这个东西,这是稍微奇怪,因为这似乎是一个比较普遍的问题(至少对于那些谁不避无情无义长的URL)。

,你编码字符串,如果编码字符串太长,你砍掉原来的和重新编码的字符,并继续这样做,直到编码字符串是足够短,你可以这样做迭代。这显然不是非常高效的。