Рейтинг:
11
Jochen Arndt
Если вы хотите UTF-16BE, вы должны использовать Кодирование.Свойство BigEndianUnicode (System. Text)[^]. Для преобразования используйте Кодирование.Метод Convert (Кодировка, Кодирование, Байт[]) (Система.Текст)[^].
// EDIT: Changed to use TF-8 and added output for console application
string myString = "यूनिकोड ";
// Use UTF-8 if the source string is UTF-8 encoded
byte [] input = System.Text.Encoding.UTF8.GetBytes(myString);
byte [] result = System.Text.Encoding.Convert(Encoding.UTF8, Encoding.BigEndianUnicode, input);
// Use Unicode if the source string is UTF-16LE encoded (the default Windows encoding)
//byte [] input = System.Text.Encoding.Unicode.GetBytes(myString);
//byte [] result = System.Text.Encoding.Convert(Encoding.Unicode, Encoding.BigEndianUnicode, input);
foreach (var utf16BEbyte in result)
Console.Write("{0:X2} ", utf16BEbyte);
Console.WriteLine();
Console.ReadKey();
Выход:
09 2F 09 42 09 28 09 3F 09 15 09 4B 09 21 00 20
Mahesh@Dev
Привет Йохен,
помогите мне получить окончательную строку, как я уже упоминал в своем вопросе.
кодированный результат myString - > 092F 0942 0928 093F 0915 094B 0921 0020
свяжись со мной по этому поводу ... пожалуйста
Заранее спасибо
Jochen Arndt
Смотрите мой обновленный ответ.
Mahesh@Dev
Спасибо но мне нужно еще немного для тебя
Здесь вы используете консоль.писать()
но я должен вернуть строковый вывод из функции.
Jochen Arndt
Я использовал WriteLine (), чтобы показать, что результат соответствует ожидаемому.
У вас есть массив байтов, содержащий строку в кодировке UTF-16BE.
Просто верни это.
Я не знаю, что вы хотите сделать с результатом. Но я думаю, что байтовый массив был бы полезен.
Mahesh@Dev
Мне нужен вывод в переменной строкового типа.Так что я могу сохранить его в базе данных.
Jochen Arndt
Строки .NET внутренне всегда кодируются UTF-16LE. Таким образом, вы не можете хранить строку UTF-16BE в объекте .NET string.
Как передать большую конечную строку в вашу базу данных, зависит от используемого интерфейса. Возможно, используемый интерфейс выполняет внутреннее преобразование, чтобы вы могли передать объект .NET string.
При использовании записи потока просто используйте массив байтов.
Но то, что вы хотите его для передачи в базу данных, не было упомянуто в вашем вопросе.
Mahesh@Dev
Так что теперь я хочу хранить их в базе данных.
пожалуйста, сделай так ... как я хочу.
Jochen Arndt
Я этого не знаю. Особенно потому, что я не знаю, какой интерфейс базы данных вы используете.
Mahesh@Dev
в противном случае вы можете сохранить результат в переменной строкового типа.