powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TEncoding изменение кодировки файла
5 сообщений из 30, страница 2 из 2
TEncoding изменение кодировки файла
    #40013040
S_Gur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_, я прекрасно понял и в первый раз. Возможность перекодирования зависит от содержания файла, поэтому пока не попытаешься выполнить конвертацию, не поймешь, можно это сделать или нет. Просто речь тут шла об альтернативных методах конвертации с некоторыми потерями, а я ответил, что пока не буду за это браться. Поэтому оставил, как было - с оберткой в Try-Except
...
Рейтинг: 0 / 0
TEncoding изменение кодировки файла
    #40013067
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S_Gur,

интересно, а как отпределяешь исходную кодировку файла?
...
Рейтинг: 0 / 0
TEncoding изменение кодировки файла
    #40013078
S_Gur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
TEncoding изменение кодировки файла
    #40013155
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S_Gur,

Код: pascal
1.
2.
3.
4.
5.
6.
  
  SNoMappingForUnicodeCharacter = 'No mapping for the Unicode character exists in the target multi-byte code page';

  Len := GetCharCount(Bytes, ByteIndex, ByteCount);
  if (ByteCount > 0) and (Len = 0) then
    raise EEncodingError.CreateRes(@SNoMappingForUnicodeCharacter);



Exception высвечивается не тогда, когда одно нельзя привести к другому, а тогда, когда исходные данные не соответствуют выбранной кодировке. Например, скармливаешь ANSI файл, а говоришь, что это UTF8.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
var
  Source, Target: TBytes;
begin
  SetLength(Source, 2);
  PWideChar(Source)^ := 'Д';
  Target := TEncoding.Convert(TEncoding.Unicode, TEncoding.ASCII, Source);
  Writeln(Length(Target), ': "', PAnsiChar(Target)^, '"');
  Readln;
end;



Результат:
Код: sql
1.
1: "?"
...
Рейтинг: 0 / 0
TEncoding изменение кодировки файла
    #40013183
S_Gur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU, спасибо, я проверю. Конкретно этот экцепшен выскочил, когда я файл, который определил как Win1251, конвертнул в 65001 (без ошибок), а потом попытался провести обратную операцию. Либо первая конвертация не была выполнена, либо дело тут в чем-то другом

P. S. Да, я проверил, ошибка была у меня. Некорректно обновлялся текст после конвертации, а текущая кодировка к тому времени уже сменялась. Еще раз спасибо
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TEncoding изменение кодировки файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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