ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Функция URLEnode [C#]
  #1  
Старый 12.10.2007, 17:27
[x26]VOLAND
Moderator - Level 7
Регистрация: 07.06.2006
Сообщений: 556
Провел на форуме:
7549607

Репутация: 2702


Отправить сообщение для [x26]VOLAND с помощью ICQ Отправить сообщение для [x26]VOLAND с помощью AIM
Question Функция URLEnode [C#]

Нужен исходник функции URLEncode для C#.
Юзать стандартный метод httpUtility.Urlencode(string) не хочу, так как он странно работает:
К примеру, буква "д" в нормальной урл-кодировке выглядит как %E4, а через httpUtility.Urlencode(string) получается %d0%b4

Скорее всего дело в различном способе парсинга символов в char-коды. Букве "д" соответствует код 228, а вот в httpUtility.Urlencode(string) буква "д" имеет код 388, и поэтому раскладывает код на два числа:
388 = %d0 + %b4 (т.е. 388 = 208 + 180),
Нужно чтобы символы кодировались нормально, без разложения.

Уже весь инет перерыл, ничего путного не нашёл.

Последний раз редактировалось [x26]VOLAND; 13.10.2007 в 04:20..
 
Ответить с цитированием

  #2  
Старый 12.10.2007, 17:33
inv
Banned
Регистрация: 03.08.2007
Сообщений: 313
Провел на форуме:
951141

Репутация: 291
По умолчанию

http://binboy.sphere.pl/index.php?show=usenet&p1=article.php&id=3179&group =pl.comp.lang.c (для си)


самому не судьба что ли?
 
Ответить с цитированием

  #3  
Старый 12.10.2007, 17:34
DWORD
Участник форума
Регистрация: 24.07.2007
Сообщений: 138
Провел на форуме:
165671

Репутация: 215
По умолчанию

Цитата:
Скорее всего дело в различном способе парсинга символов в char-коды. Букве "д" соответствует код 228, а вот httpUtility.Urlencode(string) не поддерживает символы большими кодами, и поэтому раскладывает код на два числа:
%e4 = %d0 + %b4 (т.е. 228 = 208 + 20),
Вот так загнул ну ты даешь! %d0%b4 это просто UTF8 представление буквы.
Если интересно вот алгоритм на php как составляется UTF8 из cp1251
Код:
function CP1251toUTF8($string){
	$out = '';
	for ($i = 0; $i<strlen($string); ++$i){
		$ch = ord($string{$i});
		if ($ch < 0x80)
			$out .= chr($ch);
		else
			if($ch >= 0xC0)
				if($ch < 0xF0)
					$out .= "\xD0".chr(0x90 + $ch - 0xC0);
				else
					$out .= "\xD1".chr(0x80 + $ch - 0xF0);
			else
			switch($ch){
				case 0xA8: $out .= "\xD0\x81"; break;
				case 0xB8: $out .= "\xD1\x91"; break;
			   	case 0xA1: $out .= "\xD0\x8E"; break;
				case 0xA2: $out .= "\xD1\x9E"; break;
				case 0xAA: $out .= "\xD0\x84"; break;
				case 0xAF: $out .= "\xD0\x87"; break;
				case 0xB2: $out .= "\xD0\x86"; break;
				case 0xB3: $out .= "\xD1\x96"; break;
				case 0xBA: $out .= "\xD1\x94"; break;
				case 0xBF: $out .= "\xD1\x97"; break;
				case 0x8C: $out .= "\xD3\x90"; break;
				case 0x8D: $out .= "\xD3\x96"; break;
				case 0x8E: $out .= "\xD2\xAA"; break;
				case 0x8F: $out .= "\xD3\xB2"; break;
				case 0x9C: $out .= "\xD3\x91"; break;
				case 0x9D: $out .= "\xD3\x97"; break;
				case 0x9E: $out .= "\xD2\xAB"; break;
				case 0x9F: $out .= "\xD3\xB3"; break;
			}
	}
	return $out;
}
 
Ответить с цитированием

msdn
  #4  
Старый 12.10.2007, 22:07
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию msdn

HttpUtility.UrlEncode (String, Encoding) Encodes a URL string using the specified encoding object.

это не подходит?
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть ли в Скайпе функция записи разговоров? Дрэгги Болталка 21 12.07.2007 16:33
функция mkdir] Legion342 PHP, PERL, MySQL, JavaScript 10 31.01.2007 11:32
Функция выхода из программы в php je0n PHP, PERL, MySQL, JavaScript 16 11.06.2006 21:58
функция md5pro Дикс PHP, PERL, MySQL, JavaScript 7 30.05.2006 04:24
Как скрыть мой процесс в Task Manager (функция RegisterServiceProcess не работает) Shady С/С++, C#, Delphi, .NET, Asm 8 19.09.2005 01:06



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ