• 0
Superator

Кириллица в ListView выводится в виде вопросительных знаков

Вопросы

Доброго времени суток. Добавляю информацию в ListView из JSON ответа файла php. В самом php файле стоит кодировка UTF8. В браузере кириллица из этого файла отображается нормально. Есть ли какая-то настройка кодировки в ListView?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 ответов на этот вопрос

  • 0

Добавляю информацию в ListView из JSON ответа файла php

покажите метод

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Считываю вот так, но дело в том, что в других ListView все отображается нормально.

S := TStringList.Create;
  try
    S.Text := profile_IdHTTP.get(profile_url + '?user_id=' + loged_id );
     //пробуем распарсить
    FJSONObject := TJSONObject.ParseJSONValue(S.text) as TJSONObject;
    if Assigned(FJSONObject) then //парсинг прошел успешно - считываем названия пар EnumPairs

    else //парсинг провалился - выводим сообщение
      raise Exception.Create('Файл не содержит JSON-данные');
    JsonArray := FJSONObject.Get('user_ads').JsonValue as TJSONArray;

 //Запускаем цикл
    for i := 0 to JsonArray.Size - 1 do
    begin

//Присваиваем переменным значения
      user_id := (JsonArray.Get(i) as TJSONObject).Get('user_id').JsonValue.Value;
      title := (JsonArray.Get(i) as TJSONObject).Get('title').JsonValue.Value;
//Добавляем в ListView

    with profile_ListView.Items.Add do
    begin
      Data['Text1'] := title;
      Data['Text3'] := '?user_id=' + user_id;
    end;

    end;

  finally
      S.Free;
  end;

Изменено пользователем Superator

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

В Delphi кодировка хоть и юнико, но не UTF-8, а UTF-32. Так что перекодируй сам.

Юникод юникоду рознь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 часа назад, x11 сказал:

В Delphi кодировка хоть и юнико, но не UTF-8, а UTF-32. Так что перекодируй сам.

Юникод юникоду рознь.

А можно пример как перекодировать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

что вы путаете человека. если с сервера приходит в UTF-8, все работает замечательно без всяких переделок

автор, можно URL, куда обратиться с http-запросом ?

тут на слово не верят )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

 

22 часа назад, krapotkin сказал:

что вы путаете человека. если с сервера приходит в UTF-8, все работает замечательно без всяких переделок

автор, можно URL, куда обратиться с http-запросом ?

тут на слово не верят )))

Всем спасибо. Это все моя невнимательность. Ошибка крылась в синтаксисе php файла, а не в delphi. Не указал $mysqli->set_charset("utf8").

Изменено пользователем Superator

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 15.09.2018 в 15:50, krapotkin сказал:

если с сервера приходит в UTF-8, все работает замечательно без всяких переделок

Даже более того - если с сервера приходит с указанием правильной кодировки (не обязательно UTF-8), то всё работает замечательно без всяких переделок. Ибо перекодирование автоматически производится во внутренностях http-клиента.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 15.09.2018 в 14:57, Superator сказал:

А можно пример как перекодировать?

 

Ну так UTF32 дельфийский - это же String? Значит ищи что-то вроде UTF8ToStr и обратно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу