Давайте разберемся несколько вещей. Набор символов (кодировка) и кодировки символов - это две взаимосвязанные, но разные концепции. Набор символов - это абстрактный список символов с каким-либо целочисленным кодом. Затем идут кодировки символов, которые в основном представляют собой алгоритм, который описывает, как символы представлены в байтах.
ASCII действует как набор символов и кодировка. Он использует 7 бит для выражения 128 символов (94 для печати). Unicode , с другой стороны, является набором символов, выражающим 1,114,112 кодовых точек. Существует несколько кодировок для представления строк в Юникоде, но наиболее заметными являются UTF-8, UTF-16, UTF-16LE и UTF-32. Другими словами, один символ Unicode может быть представлен различными способами в зависимости от кодировок.
Как я могу преобразовать символы Unicode в коды ASCII в Delphi 7?
Я думаю, что вопрос можно интерпретировать двумя способами.
У меня есть строка Unicode в некоторых кодировках, которая включает только печатные символы ASCII. Как я могу преобразовать строку в байтовый массив кодировки ASCII?
У меня есть строка Unicode в некоторых кодировках, которая также включает не-ASCII печатные символы, такие как китайские символы. Как я могу закодировать строку в кодировку ASCII без потери информации, а затем декодировать ее обратно в исходную строку Unicode?
Если вы имеете в виду первое, вы можете загрузить строку Unicode в WideString, как говорит Осман, и сделать
var
original: WideString;
s: AnsiString;
begin
s := AnsiString(original);
Если вы имеете в виду второе, вам понадобится универсальный алгоритм кодирования, такой как Base64 кодировка. Вы можете использовать DCPBase64.pas , включенный в DCPcrypt v2 Beta 3 . * 1034 Дэвида Бартона.