powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Преобразование строки из ascii в utf-8
6 сообщений из 6, страница 1 из 1
Преобразование строки из ascii в utf-8
    #38704035
La France
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Есть пример преобразования строки из utf-8 в ascii:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
	
String^ FromUtf8ToAscii(String^ unicodeString)
	{
		// Создаём две различные кодировки
		Encoding^ ascii = Encoding::ASCII;
		Encoding^ unicode = Encoding::Unicode;

		// Конвентируем строку в массив байт
		array<Byte>^unicodeBytes = unicode->GetBytes( unicodeString );

		// Выполняем преобразование из одной кодировки в другую
		array<Byte>^asciiBytes = Encoding::Convert( unicode, ascii, unicodeBytes );

		// Преобразуем массив байт в массив чаров и чары в строку
		array<Char>^asciiChars = gcnew array<Char>(ascii->GetCharCount( asciiBytes, 0, asciiBytes->Length ));
		ascii->GetChars( asciiBytes, 0, asciiBytes->Length, asciiChars, 0 );
		String^ asciiString = gcnew String(asciiChars);

		return asciiString;
	}


Пытаюсь переделать этот метод в обратное преобразование:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
	String^ FromAsciiToUtf8(String^ asciiString)
	{
		// Создаём две различные кодировки
		Encoding^ ascii = Encoding::ASCII;
		Encoding^ unicode = Encoding::Unicode;

		// Конвентируем строку в массив байт
		array<Byte>^asciiBytes = ascii->GetBytes( asciiString );

		// Выполняем преобразование из одной кодировки в другую
		array<Byte>^unicodeBytes = Encoding::Convert( ascii, unicode, asciiBytes );

		// Преобразуем массив байт в массив чаров и чары в строку
		array<Char>^utf8Chars = gcnew array<Char>(unicode->GetCharCount( unicodeBytes, 0, unicodeBytes->Length ));
		unicode->GetChars( unicodeBytes, 0, unicodeBytes->Length, utf8Chars, 0 );
		String^ utf8String = gcnew String(utf8Chars);

		return utf8String;
	}


но на выходе получается снова строка ascii.
В чем может быть причина?

Спасибо!
...
Рейтинг: 0 / 0
Преобразование строки из ascii в utf-8
    #38704090
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
La FranceВ чем может быть причина?
В том что ascii и utf-8 ничем не отличаются. ascii включает в себя только латиницу,
которая в utf-8 имеет при этом абсолютно те же коды символов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Преобразование строки из ascii в utf-8
    #38704173
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
La France,

String^ всегда содержит символы UTF16.
Чтобы использовать символы UTF8 и ASCII их обычно помещают в байтовые массивы. То есть, по идее, оба метода, чтобы соответствовать своему названию, должны и принимать байтовый массив, и возвращать байтовый массив.

Модератор: Тема перенесена из форума "C++".
...
Рейтинг: 0 / 0
Преобразование строки из ascii в utf-8
    #38704443
La France
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petalvik,

String^ формируется из char*.
...
Рейтинг: 0 / 0
Преобразование строки из ascii в utf-8
    #38704444
La France
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Тем не менее, от вашего объяснения адекватно строка в ascii у меня не отображается. И из вашего же объяснения я понял только то, что мне ничего преобразовывать не нужно.

Пример приведенный на сайте переводит utf-8 в ascii, обратное преобразование не работает (либо я переделал функцию коряво). По вашим словам пример с сайта тоже не должен работать, ведь utf-8 и ascii ничем не отличаются.

Чего я не понимаю?
...
Рейтинг: 0 / 0
Преобразование строки из ascii в utf-8
    #38704634
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
La Francepetalvik,

String^ формируется из char*.

char* - байтовый массив(c
String^ всегда UTF16
Char - UTF16
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Преобразование строки из ascii в utf-8
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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