|
|
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
Всем привет. Есть 2 программы: одна заливает обновление на сервер, другая - скачивает. На сервер заливается само обновление (exe-шник) и json-файл с метаифнормацией с помощью скрипта WinSCP. Структура json такая: {"version":"1.0.20.0", "cdate":"17.07.2017", "file":"Setup_System.exe", "changes":["Изменили дизайн","исправили ошибки","и т.д."]} Поле Changes это изменения в новой версии. На сервер заливается нормальный json (в кодировке ANSI), все читабельно, а когда получаю json с сервера, то в массиве changes кракозябры. К серверу подключаюсь через TIdHttp. Создание json на клиенте: Код: 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. Чтение json-а: Код: pascal 1. 2. 3. 4. 5. 6. З.Ы. Читал другие темы на этом форуме и вообще в инете искал, так и не смог разобраться в чем дело/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2017, 10:00:23 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
ankonianЗ.Ы. Читал другие темы на этом форуме и вообще в инете искал, так и не смог разобраться в чем дело/ У S.SaveToFile нет перегруженного метода вида SvaeToFile(FileName, Encoding)?.. Тогда можно попробовать разные Encoding, например: SaveToFile(FileName, TEncoding.Unicode) или SaveToFile(FileName, TEncoding.Win1251) (не помню как Win1521 в TEncoding нзывается - хелп в помощь). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2017, 10:13:30 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2017, 10:17:44 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
alekcvp, пробовал UTF8 при приеме и передаче. Кракозябры другие становятся. Конвертирование тоже делал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2017, 10:18:07 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
ankonianalekcvp, пробовал UTF8 при приеме и передаче. Кракозябры другие становятся. Конвертирование тоже делал. Выложи сюда файлик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2017, 10:19:10 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
для работы с JSON очень неудобны встроенные классы. гораздо лучше воспользоваться XSuperObject на github абсолютно фри кодировка должна быть UTF8 по-любому, и не нужны никакие TEncoding.GetBytes и т.п. Код: pascal 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2017, 10:29:55 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
чччД, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2017, 10:33:29 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
krapotkin, спасибо большое! Сейчас буду пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2017, 10:34:44 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
ankonian, . ...я файлик с "неправильным" json приложить просил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2017, 10:46:37 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
чччД, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2017, 10:57:31 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
ankonian, это json - файл, но строки в Win-1251 кодировке. Вроде ты этого и хотел? [spoiler] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2017, 11:11:07 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
чччД, я знаю, что если открыть файл в редакторе, то все читается (об этом написал в первом сообщении). Проблема в компонентах delphi, которые читают этот файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2017, 11:21:45 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
ankonianПроблема в компонентах delphi, которые читают этот файл. SaveToFile(FileName, TEncoding.Unicode) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2017, 11:23:36 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
krapotkinдля работы с JSON очень неудобны встроенные классы. гораздо лучше воспользоваться XSuperObject на github абсолютно фри кодировка должна быть UTF8 по-любому, и не нужны никакие TEncoding.GetBytes и т.п. Спасибо большое. С SuperObject все заработало. Пока сделал костыльно с записью в файл, позже исправлю. Код для примера если кому-нибудь понадобится: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Без файла строку из MemoryStream не может разобрать - вываливается ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2017, 13:22:10 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
alekcvpankonianПроблема в компонентах delphi, которые читают этот файл. SaveToFile(FileName, TEncoding.Unicode) С записью файла у меня все было нормально, этот вариант функции тоже использовал. Проблемы были при чтении. Всем спасибо за помощь. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2017, 13:24:49 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
писать в файл, чтобы потом его читать - это знатное извращение. var JsonObject: ISuperObject; ResponseStr := fGameIdHTTP.post(URLStr,LParams); JsonObject := SO(JSONString); вся суть в двух строках. проверки на пустой ответ, правильный формат и прочее, прочее - на свой вкус. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2017, 16:52:26 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
чем xSuperObject лучше родного SuperObject ? вроде по тестам он медленнее, а плюсы у него какие ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 11:07:02 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
вроде синтаксис еще сахарнее и поддержка дельфей начинается с более старших версий т.е версия дельфи не новая берез без X, новая с X это если на пальцах :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 11:13:24 |
|
||
|
Проблема с кодировкой JSON (Embarcadero Delphi XE5)
|
|||
|---|---|---|---|
|
#18+
энди, Хм.... Вообще-то Анри, пока его борманы не обломали и он еще дельфями занимался, как раз на новые версии и ориентировался. Т.е. да, потом он в SuperObject Добавил поддержку D7 "по просьбам трудящихся", потом поломал, потом снова поправил и т.д. А в иксе, видимо, не заморачивались и не стали даже пытаться исправить. Я когда-то реально пытался понять, на хрена его форкнули, но так и не понял. PS. а наиболее быстрый с прицелом на обязательную поддержку D7 и FPC - пожалуй mORMot Хотя мне в json'е никогда не приходилось выжимать скорость ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 11:21:57 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39490016&tid=2042021]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
179ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 483ms |

| 0 / 0 |
