Ограничение длины строки в кодировке URL многобайтовыми символами в .NET - PullRequest
5 голосов
/ 03 февраля 2011

Я использую .NET, и мне нужно обрезать строку, которая может содержать многобайтовые символы, чтобы она не превышала заданную длину после кодирования URL. Это похоже на то, что будет встроено, но я не могу его найти.

Я бы просто сделал подстроку после того, как она закодирована в URL, но это может привести к удалению части закодированного символа (пробел становится% 20, а в конце он может быть усечен до% 2, что недопустимо) или эта часть многобайтового символа будет усечена (π закодирована как% CF% 80, и она может быть усечена как%,% CF,% CF% 8, все из которых неверны).

1 Ответ

1 голос
/ 03 февраля 2011

Мой быстрый поиск в Google ничего не дал для этого, что немного удивительно, поскольку это кажется довольно распространенной проблемой (по крайней мере, для тех, кто не избегает чудовищно длинных URL).

Вымог бы делать это итеративно, когда вы кодируете строку, и если закодированная строка слишком длинная, вы отсекаете символ от оригинала и перекодируете, и продолжаете делать это, пока закодированная строка не станет достаточно короткой.Это, очевидно, не будет очень эффективным.

...