Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2017, 18:07   #11
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Теперь? Изменили-то что?)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.09.2017, 19:16   #12
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Теперь? Изменили-то что?)
Теперь - относится к символам. До этого был "неизвестный символ", теперь нормальные символы.
Код остался тем же, ничего в нём не менял.

Последний раз редактировалось Shouldercannon; 20.09.2017 в 19:19.
Shouldercannon вне форума Ответить с цитированием
Старый 22.09.2017, 08:16   #13
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Значит название функции врет, в ANSI так не может быть (под ANSI в данном контексте имеются в виду 1-байтовые кодовые страницы, то есть одна из них).

Посмотрите ее исходник в System.pas если он доступен в вашем издании Дельфи. В старых версиях там просто вызывается Utf8Decode и результат обрезается из WideString в string (AnsiString). Если в новых так же, то там string это уже не AnsiString, то есть ничего не обрежется и Utf8ToAnsi эквивалентен Utf8Decode.

Может быть оставили так для упрощения перехода со старых версий.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 22.09.2017, 20:13   #14
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Код:
function Utf8ToAnsi(const S: _RawByteStr): string;
begin
  Result := string(Utf8ToUnicodeString(S));
end;

function UTF8ToUnicodeString(const S: _RawByteStr): UnicodeString;
var
  L: Integer;
  Temp: UnicodeString;
begin
  Result := '';
  if S = '' then Exit;
  L := Length(S);
  SetLength(Temp, L);

  L := Utf8ToUnicode(PWideChar(Temp), L + 1, _PAnsiChr(S), L);
  if L > 0 then
    SetLength(Temp, L - 1)
  else
    Temp := '';
  Result := Temp;
end;
Shouldercannon вне форума Ответить с цитированием
Старый 22.09.2017, 20:26   #15
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну вот, примерно как я и сказал.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
utf8toansi не работает в DelphiXE? Ship_1 Общие вопросы Delphi 13 17.12.2017 17:50
проблема с кодировкой serres PHP 0 05.04.2011 19:12
Проблема с кодировкой Abuhamed PHP 2 25.12.2010 21:47
Проблема с кодировкой cheef PHP 6 02.12.2010 12:27
проблема с кодировкой Demonmov C++ Builder 1 02.06.2010 01:15