Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 20.09.2017, 19:07   #11
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 14,292
Репутация: 2795

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Теперь? Изменили-то что?)
Alex11223 на форуме   Ответить с цитированием
Старый 20.09.2017, 20:16   #12
Shouldercannon
Профессионал
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Адрес: Пенза
Сообщений: 1,705
Репутация: 209

icq: 473732523
По умолчанию

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

Последний раз редактировалось Shouldercannon; 20.09.2017 в 20:19.
Shouldercannon вне форума   Ответить с цитированием
Старый 22.09.2017, 09:16   #13
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 14,292
Репутация: 2795

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

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

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

Может быть оставили так для упрощения перехода со старых версий.
Alex11223 на форуме   Ответить с цитированием
Старый 22.09.2017, 21:13   #14
Shouldercannon
Профессионал
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Адрес: Пенза
Сообщений: 1,705
Репутация: 209

icq: 473732523
По умолчанию

Код:

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, 21:26   #15
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 14,292
Репутация: 2795

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Ну вот, примерно как я и сказал.
Alex11223 на форуме   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




13:29.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru