Рейтинг:
2
OriginalGriff
Вы можете попробовать это:
string s = ... // Your string source here
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(s);
Но я этого не гарантирую. Это может сработать, если вы используете другую кодировку.
[no name]
Тело, я уже пробовал его, но когда сервер получает его... он выглядит так, как это "???" вместо этого "هلو".
OriginalGriff
Вы использовали обратный процесс, чтобы преобразовать его обратно? Помните, что байты-это всего лишь 8-битные величины, символы Юникода-это (как правило) 16 или 32 бита, но кодировка может быть распределена по нескольким "кодовым точкам" (Wiki может помочь вам, если вы хотите понять это)
Таким образом, символы должны быть "переведены" в байты, а затем снова вернуться, чтобы собрать исходный ввод.
[no name]
У меня есть обратный процесс в другой стороне, но результат -"??? " вместо вышеприведенного слова.
OriginalGriff
Какой код вы использовали, чтобы повернуть процесс вспять?
Вы пробовали другую кодировку?
Sergey Alexandrovich Kryukov
Не совсем. Символ, конечно, может распространяться на несколько "слов", таких как 8-битные (в UTF-8) или 16-битные (в UTF-16 суррогатных парах), но это все равно одна кодовая точка; этот термин используется для абстрактного (не связанного с машинным представлением) математического упорядочивающего числа, один к одному соответствующего символу (также как абстрактное культурное понятие, не связанное с глиф-графикой и т. д.)
(Кроме того, я не говорю о комбинированной диакритике, которая представляет собой комбинацию символов (и, следовательно, кодовую точку). Насколько я помню, это не относится к арабским символам.)
—СА
[no name]
посмотрите на мое решение, я уже использовал его в прошлом
[no name]
Я использовал это:
byte[] bytes; //который приходит от клиента.
строка s = System.Text.Encoding.ASCII.GetString(байты);
Sergey Alexandrovich Kryukov
Что ты делаешь?! Забудьте об ASCII! Вы работаете с арабским языком, где ни один из символов не вписывается в ASCII, который также является 8-битным.
Все арабские символы нуждаются в 16 битах на символ!
Забудьте ASCII навсегда, он исчез. Даже не все английские символы вписываются в ASCII, только алфавит и часть пунктуации; некоторые знаки препинания уже находятся за пределами ASCII, такие как " — "или"«"...
Вам нужно использовать только некоторые UTF, чаще всего UTF-8, но все UTF эквивалентны. В отличие от ASCII.
Честно. Это вы из Ирака, почему я должен объяснять вам, как работает арабская письменность в компьютерах? Предполагается, что вы знаете лучше меня.
—СА
[no name]
байт[] байт = кодировка.Кодировках utf32.GetBytes(iString);
Philippe Mori
У вас есть правильная идея, но кодировка ASCII явно неверна. Я бы рекомендовал кодировку UTF-8. На другом конце вы делаете обратное декодирование, и вы должны получить исходную строку.
Например, UTF-8 становится стандартной кодировкой в интернете. Вы можете найти информацию об этом на Wikipédia.