2011-02-03 90 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)。

,你編碼字符串,如果編碼字符串太長,你砍掉原來的和重新編碼的字符,並繼續這樣做,直到編碼字符串是足夠短,你可以這樣做迭代。這顯然不是非常高效的。