• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Проблема с кодировкой

J

JohnLemon

Всем здравствуйте, может кто подскажет. Проблема в следующем: если сохраняю в документ с использованием метода toJson Java коверкает кодировку. Например сохраняю так
JavaScript:
jsonArray.push(toJson(viewScope.secondResultVariants[b]));
idoc.replaceItemValue("secondResultVariants", jsonArray);
В базе сохраняется что то в роде такого:
"{"id":"C41B4BD5C70D20E446257EFA002C80F0","name":"\u0431\u0435\u043B\u043E\u043A (Tp 47)"}"
"{"id":"299F3B552DA79C2146257EFA002D5804","name":"\u0431\u0435\u043B\u043E\u043A (TmpA 45)"}"
Можно ли как то указать кодировку "на лету"
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
"обычно" энкодят национальные кодировки...
хорошей практикой является использование UTF8
скорее всего "портит" кодировку не java, а тот кто вин1251 использует ;)
 
  • Нравится
Реакции: JohnLemon

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
для работы с json
 
  • Нравится
Реакции: JohnLemon
J

JohnLemon

скорее всего "портит" кодировку не java, а тот кто вин1251 использует
:banghead:
Да тут мой косяк, можно как то безболезненно поставить utf-8, в базе просто уже есть данные... И где выставить кодировку?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
безболезненно поставить utf-8, в базе
в базе её "нет" (кодировки) там
а вот какая кодировка на странице (кот. с сервера попадает в браузер) - это достаточно "критично"
[DOUBLEPOST=1447774637,1447774451][/DOUBLEPOST]если константы стринговые - в какой кодировке JS - тоже может оказаться значимым
 
  • Нравится
Реакции: JohnLemon
J

JohnLemon

а как мне можно перекодировать то теперь ) ? может есть методы какие нибудь на js ?
 
J

JohnLemon

и вообще как я понимаю \u0431 это java sourсe code какой то....
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
а как мне можно перекодировать то теперь ) ?
и вообще как я понимаю \u0431 это java sourсe code какой то....
это юникодовый символ
как перекодировать - брать и заменять ;)
 
  • Нравится
Реакции: JohnLemon
J

JohnLemon

Два раза кодировать, перед записью в базу и потом при выборе значения из нее как то не очень хорошо по моему. Кстати страницы у меня в utf-8 в роде.
<?xml version="1.0" encoding="UTF-8"?>
 
J

JohnLemon

И вообще че за фигня на форуме с репутацией, я выбираю поставить 3 он -1 ставит капец, его сделают когда нибудь нормальным, авториация постоянно вообще выскакивает невозможно нормально общаться ).
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
Два раза кодировать, перед записью в базу и потом при выборе значения из нее как то не очень хорошо по моему. Кстати страницы у меня в utf-8 в роде.
откуда берется этот
viewScope.secondResultVariants
[DOUBLEPOST=1447842709,1447842452][/DOUBLEPOST]и второе - у JS есть методы преобразования в строку и обратно, для JSON ...

то что происходит у вас - я мало понимаю
 
  • Нравится
Реакции: JohnLemon
J

JohnLemon

viewScope.secondResultVariants
Юзер выбирает различные значения, в viewScope.secondResultVariants создается массив объектов JSON я его хочу преобразовать в строку и записать в поле в документе а при загрузки дока преобразовать в объект и отобразить на странице в репитах. Но toJson мне портит всю кодировку и fromJson тоже.
Тут клиентский код мне он не очень подходит (
JSON.parse — читает объекты из строки в формате JSON.
JSON.stringify — превращает объекты в строку в формате JSON, используется, когда нужно из JavaScript передать данные по сети.
Этих методов нету как я понимаю в ssjs
 
J

JohnLemon

С какого боку он вообще при таком раскладе:
JavaScript:
string = '{name:\u041F\u0440\u0438\u0432\u0435\u0442}';
_dump(string)
Мне выводит в консоль:
[DOUBLEPOST=1447847771,1447847590][/DOUBLEPOST]а так:
JavaScript:
var json = {name:'Привет'};  
var string;
string = toJson(json);
_dump(string)
выводит
{name:\u041F\u0440\u0438\u0432\u0435\u0442}
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
34
Но toJson мне портит всю кодировку и fromJson тоже.
- ну и наплюй на джейсон:
1 джойнь данные разделителями
2 сохраняй эту строку в базу.
--------------------
3 читай эту строку из базы.
4 сплить её по твоему разделителю и отдавай на растерзание репитеру.

преобразовать в объект и отобразить на странице в репитах

- объект ?? Репитер принимает массив. Любой.
 
  • Нравится
Реакции: JohnLemon
J

JohnLemon

- объект ?? Репитер принимает массив. Любой.
У меня репитер отображает массив объектов.
1 джойнь данные разделителями
2 сохраняй эту строку в базу.
--------------------
3 читай эту строку из базы.
4 сплить её по твоему разделителю и отдавай на растерзание репитеру.
Наверное так и придется но как то это не по современному же будет и уныло.... Нафик делать тогда fromJson и toJson если он так коверкает
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
Нафик делать тогда fromJson и toJson если он так коверкает
ну вот и у меня такой вопрос
[DOUBLEPOST=1447851440,1447851412][/DOUBLEPOST]он не коверкает, а делает "универсальным", а вот анэскейпить тогда нужно
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!