powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / two byte UTF-16 Unicode
8 сообщений из 8, страница 1 из 1
two byte UTF-16 Unicode
    #32433888
Фотография Aeon Technologies
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привет!
вот уже который день ищу в интернете информацию по сабжу... безрезультатно... мне всего-то нужно строку перекодировать в эту самую "two byte UTF-16 Unicode"... вобщем после кодировки должно выйти чо-то типа 031903a80398 (это закодированы три символа...)

помогите, плиз.
...
Рейтинг: 0 / 0
two byte UTF-16 Unicode
    #32435480
ILF80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Строки во фреймворке всегда юникоидные :) Чтобы получить массив байтов нужно сказать:
Код: plaintext
1.
string str =  "Привет" ;
byte[] result = System.Text.Encoding.Unicode.GetBytes( str );
...
Рейтинг: 0 / 0
two byte UTF-16 Unicode
    #32441103
Фотография Aeon Technologies
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
благодарю за ответ. но тут не все так просто как хотелось бы.
вобщем кодирую слово "блин" (без кавычек) нужно что бы было:

00E100EB00E800ED


такой код:

static string Char24CharsUTF8(string s)
{
StringBuilder sb = new StringBuilder();
byte[] data = Encoding.UTF8.GetBytes(s);

for (int i = 0; i < data.Length; i++)
sb.Append(data .ToString("X2"));

return sb.ToString();
}

дает мне D0B1D0BBD0B8D0BD
... что не так делаю?

что не так делаю?

есть мысли?
...
Рейтинг: 0 / 0
two byte UTF-16 Unicode
    #32441319
Фотография Aeon Technologies
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неужели никто не овтетит?
...
Рейтинг: 0 / 0
two byte UTF-16 Unicode
    #32441416
Игорь Шевченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то у тебя не сходится! Строку 00E100EB00E800ED ты для русского языка получить не можешь! Ибо UTF образуется как <codepage><code symb> а 00 это код латинской таблицы. Для русского языка он должен быть 04 (или что-то подобное, если это белорусский, украинский и т.д.). Но никак не 00!
...
Рейтинг: 0 / 0
two byte UTF-16 Unicode
    #32441502
Фотография Aeon Technologies
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь, эти все дела я делаю для смс-гейтвея.
ситуация такая. На сайте N я захожу, страница в ISO Western Europe, ввожу текст "блин" - получаю 00E100EB00E800ED. отсылаю СМС. все пучком. захожу еще раз на сайт, выставляю UTF-8, ввожу то же слово, получаю другой результат, отсылаю СМС - получаю крякозяблы. у себя в коде следуя этому алгоритму делаю следующее:



static string Char24CharsUTF8(string s)
{
StringBuilder sb = new StringBuilder();
byte[] data = Encoding.UTF8.GetBytes(s);


/**/
Encoding ISO8859 = Encoding.GetEncoding("ISO-8859-1");
Encoding UTF8 = Encoding.GetEncoding("UTF-8");
data = Encoding.Convert(UTF8,ISO8859,data);
/**/

for (int i = 0; i < data.Length; i++)
sb.Append(data .ToString("X4"));

return sb.ToString();
}



и понятно что получаю чепуху, закодированные знаки вопроса...
...
Рейтинг: 0 / 0
two byte UTF-16 Unicode
    #32442092
Игорь Шевченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле, переключение кодировок - не показатель. Еще неизвестно как они клавиатуру отрабатывают.
А в твоем коде - явная ошибка
for (int i = 0; i < data.Length; i++)
sb.Append(data.ToString("X4"));

будет всегда выдавать 00ху, потому что data - byte. Но, по идее, ты все делаешь правильно. А ты уверен, что тебе нужна именно ISO? Я пробовал отправлять СМС руками. И могу сказать, что это зависит от оператора. На одного из наших нормально уходило в 1251, а для всех остальных - нужно было в заголовке письма выставлять charset. Другой же, считал "родной" - koi8
...
Рейтинг: 0 / 0
two byte UTF-16 Unicode
    #32442750
Фотография Aeon Technologies
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю за ответ.
В результате коллективной работы родилось вот это:

static string UTF8(string s)
{
StringBuilder sb = new StringBuilder();
byte[] data = Encoding.Unicode.GetBytes(s);
for (int i = 0; i < data.Length; i=i+2)
{
sb.Append(data[i+1].ToString("X2"));
sb.Append(data .ToString("X2"));
}

return sb.ToString();
}


что решает поставленные задачи.
Огромное мерси моим друзьям, которые не посещаютэтот форум :)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / two byte UTF-16 Unicode
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]