Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/76: Рейтинг темы: голосов - 76, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 11.06.2015
Сообщений: 5

Перевод текста из кодировки ascii в unicode

11.06.2015, 14:49. Показов 15188. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собствено если кто-то имеет идеи о том, как перевести cp1251 или ascii в unicode, и как необходимо считывать старший и младший байт напишите пожалуйста =(
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.06.2015, 14:49
Ответы с готовыми решениями:

ASCII, Unicode.
Дана фраза: «Скорость вычисляется по формуле S=t*v » Вычислить, сколь-ко байт необходимо для хранения в памяти этой фразы, если для...

Прочитать файл в кодировке cp1251 и перевести в кодировки koi8r, iso88595, unicode, microsoft sp866
работа с кодовыми таблицами русского языка дан исходный текст , кодировка cp-1251 составить программу, которая прочитает этот файл и...

Преобразование кодировки USC2 в UNICODE или ASCII
Имеется текст в кодировке USC2, нужно преобразовать в нормальный читаемый. Не могу преобразовать такой текст 0418043704320438 в читаемый...

8
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,907
Записей в блоге: 12
11.06.2015, 17:58
Если это учебное задание, то можно сделать массив (таблицу) для перекодировки.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
type
  TTable = array [#0..#255] of word;
const
  Cp1251ToUtf16: TTable =
  (
    $0000,       <--- для символов от #0 до #127 коды совпадают
    $0001,
...................
    $0402,         <-- для остальных символов нужно смотреть соответствие по таблице
    $0403,
    $201A,
...................
  );
Таблицу соответствия кодов cp1251 и utf16 можно посмотреть на офсайте unicod и в Wikipedia.

Добавлено через 6 минут
А про ст. и мл. байты не понял. Ты про BOM?
1
0 / 0 / 0
Регистрация: 11.06.2015
Сообщений: 5
11.06.2015, 20:11  [ТС]
ФедосеевПавел, такой код переведет из Cp-1251 в Unicode (русский текст)?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
program smag;
 
const
i:array [1..64] of char = (
    'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж',
    'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р',
    'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ',
    'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д',
    'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о',
    'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш',
    'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
Unicode: array['А'..'я'] of word = (
   1040,1041,1042,1043,1044,1045,1046,1047, 1048, 1049,
   1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059,
   1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,
   1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079,
   1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089,
   1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099,
   1100, 1101, 1102, 1103);
  {#1040,#1041,#1042,#1043,#1044,#1045,#1046,#1047,#1048,#1049,
  #1050,#1051,#1052,#1053,#1054,#1055,#1056,#1057,#1058,#1059,
  #1060,#1061,#1062,#1063,#1064,#1065,#1066,#1067,#1068,#1069,
  #1070,#1071,#1072,#1073,#1074,#1075,#1076,#1077,#1078,#1079,
  #1080,#1081,#1082,#1083,#1084,#1085,#1086,#1087,#1088,#1089,
  #1090,#1091,#1092,#1093,#1094,#1095,#1096,#1097,#1098,#1099,
  #1100,#1101,#1102,#1103);}
//Unicode1: array[1..32] of char 
var
ch:char;
write_word:word;
input_file:text;
mid_file:file of word;
output_file: file of byte;
s,k: integer;
 
begin
 s:=1;
 while s<>0 do
 begin
 assign(input_file,'in.txt');
 reset(input_file);
 assign (mid_file,'mid.txt');
 rewrite (mid_file);
 assign(output_file,'out.txt');
 rewrite(output_file);
 writeln ('Select the charset');
 writeln('1 - unicode');
 readln(k);
 writeln('Enter 0 for exit');
 readln(s);
 end;
 
//unicode
/////////
        if (k=1) then
        begin
          while not eof(input_file)   do
            begin
              read(input_file,ch);
              writeln('ch',ch);
              for k:=1 to 64 do
               if i[k]=ch then
              begin
              write_word:=Unicode[ch];
              //writeln('write_word ', write_word, 'Unicode[ch] ', Unicode[ch], 'ch', ch);
              write(mid_file,write_word);
              end;
               if ord(ch)<128 then
              begin
              write_word:=ord(ch);
              write(mid_file,write_word);
              end;
               if ord(ch)=168 then
              begin
              write_word:=1025;
              write(mid_file,write_word);
              end;
               if ord(ch)=184 then
               begin
               write_word:=1105;
               write(mid_file,write_word);
               end;
            end;
         end;   
    close(input_file);
    close(mid_file);
    close(output_file);
end.
кодировка файла будет unicode?
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,907
Записей в блоге: 12
11.06.2015, 20:45
Лучший ответ Сообщение было отмечено smag как решение

Решение

Детский садик. Лучший критерий истины - практика. Создай файл и открой его текстовым редактором, при необходимости принудительно задав кодировку utf16.
Unicode - он разный бывает (utf8, utf16LE, utf16BE, utf32LE, utf32BE).

Сразу говорю - нет.
Конвертация должна быть примерно
Pascal
1
2
3
4
  if ch<128 then
    write_word:=ord(ch)
  else
    write_word:=Table[ch];
Или заполнить таблицу от #0 до #255 и не морочиться
Pascal
1
  write_word:=Table[ch];
Коды взять из Wikipedia.

Добавлено через 3 минуты
При записи в файл можно добавить BOM, тогда текстовый редактор с большой вероятностью сразу откроет в unicode.
Но с BOM нужно осторожнее - иногда он мешает.

Добавлено через 10 минут
В TurboPascal 10 лет назад для чтения визиток на телефонах я делал для ср866 так
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
TYPE
  UniTable = array [0..127] of Word;
CONST
  CP866_Uni  : UniTable =
               ( $0410, $0411, $0412, $0413, $0414, $0415, $0416, $0417,
                 $0418, $0419, $041A, $041B, $041C, $041D, $041E, $041F,
                 $0420, $0421, $0422, $0423, $0424, $0425, $0426, $0427,
                 $0428, $0429, $042A, $042B, $042C, $042D, $042E, $042F,
                 $0430, $0431, $0432, $0433, $0434, $0435, $0436, $0437,
                 $0438, $0439, $043A, $043B, $043C, $043D, $043E, $043F,
                 $2591, $2592, $2593, $2502, $2524, $2561, $2562, $2556,
                 $2555, $2563, $2551, $2557, $255D, $255C, $255B, $2510,
                 $2514, $2534, $252C, $251C, $2500, $253C, $255E, $255F,
                 $255A, $2554, $2569, $2566, $2560, $2550, $256C, $2567,
                 $2568, $2564, $2565, $2559, $2558, $2552, $2553, $256B,
                 $256A, $2518, $250C, $2588, $2584, $258C, $2590, $2580,
                 $0440, $0441, $0442, $0443, $0444, $0445, $0446, $0447,
                 $0448, $0449, $044A, $044B, $044C, $044D, $044E, $044F,
                 $0401, $0451, $0404, $0454, $0407, $0457, $040E, $045E,
                 $00B0, $2219, $00B7, $221A, $2116, $00A4, $25A0, $00A0 );
.............................
  if ch<#128 then
    Utf16Char:=ord(ch)
  else
    Utf16Char:=CP866_Uni[ord(ch)-128];
.............................
Добавлено через 1 минуту
Это я показал для того, чтобы видно стало - коды не по порядку следуют.

Добавлено через 2 минуты
Если это не учебная задача - нужно читать документацию к компилятору - могут быть готовые средства работы.
1
0 / 0 / 0
Регистрация: 11.06.2015
Сообщений: 5
11.06.2015, 20:50  [ТС]
Скажите как принудительно задавать кодировку файлу или где про это прочитать?(задачу в универе дали первый раз с кодировками сталкиваюсь)
я использовал соответствие ср1251 и unicoda http://i.voenmeh.ru/kafi5/Kam.loc/inform/UTF-8.htm
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,907
Записей в блоге: 12
11.06.2015, 21:18
Лучший ответ Сообщение было отмечено smag как решение

Решение

Я знакомился по Wikipedia и документации с офсайта unicode.org.

Ещё раз повторю unicode разный бывает. Начни знакомство с utf16 - там все символы одной длины (2 байта).

Кодировку текстового файла задавай
- в "Блокнот" при открытии файла
Миниатюры
Перевод текста из кодировки ascii в unicode  
1
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,907
Записей в блоге: 12
11.06.2015, 21:27
Во многих файлах есть маркер, указывающий на тип файла. Текстовые файлы с кодировками unicode тоже имеют такие маркеры - BOM (описание в Wikepedia) - 2 байта в начале файла.
0
0 / 0 / 0
Регистрация: 11.06.2015
Сообщений: 5
11.06.2015, 21:29  [ТС]
ФедосеевПавел, спасибо вам большое, программа работает конечный текст в unicode
P.S. Преподаватель говорил, что самый простой способ это использовать старший и младший байт, поэтому я и спрашивал про них.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,907
Записей в блоге: 12
11.06.2015, 21:37
Может ещё столкнёшься с unicode - это не просто кодировка, это смесь кодировки и ПО - т.к. эта кодировка позволяет из нескольких последовательно идущих в файле символов изображать один, но уже с ударением, двоеточием и многими другими модификаторами. Некоторые коды нужно преобразовывать для того, чтобы узнать, чем они были до "навешивания" модификаторов.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.06.2015, 21:37
Помогаю со студенческими работами здесь

Ошибка при установке кодировки ASCII в XSL: Unable to translate Unicode character
Добрый день. Не подскажете. Есть исходный файл &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;names&gt; &lt;name&gt; Тест ...

Перевод из кодировки ANSI в кодировку ASCII.
Эта функция которая преобразует строку символов в кодировке ANSI в строку в кодировке ASCII Объясните что значат -64 и -16? И почему...

Кодировка текста из ASCII в UNICODE и обратно
Нужно связать код FASM с Visual C++. Помогите пожалуйста..:help:

Перевод восьмибитного кода в символьный, кодировки ASCII
Доброе время. подскажи пожалуйста как можно перевести 8-ми битный код в символьный, кодировки ASCII ? Пример: 01000001...

Исправить программу для кодировки текста из ASCII В 1251
Помогите пожалуйста пишу программу для кодировки текста из ASCII В 1251, в коде постоянно выбрасывает исключение, якобы выходит за пределы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru