RESTHeart с кодировкой windows-1251

  • сервер MongoDB; Текстовые данные в кодировке windows-1251.
  • Сервер RESTHeart.
  • PHP с кодировкой window-1251 делает запрос к RESTHeart.
  • Текстовые данные повреждены

Чтобы получить текст «назад», я использую этот код (от utf-8 до 1251, затем от utf-8 до 1251, затем обратно к utf-8, потому что json выдает ошибку, если кодировка не utf-8):

$body = iconv('CP1251', 'UTF-8', iconv('UTF-8', 'CP1251//IGNORE', iconv('UTF-8', 'CP1251//IGNORE', $body)));

После этого объект $body содержит обычный текст, но без каких-либо символов (не специальных, вроде кириллической 'И').


person Alexey    schedule 20.04.2017    source источник
comment
Я не думаю, что вы можете преобразовать utf-8 в 1251, затем из utf-8 в 1251, затем обратно в utf-8 без потери информации... Я бы использовал либо все 1251, либо все UTF-8.   -  person mturatti    schedule 21.04.2017
comment
Я бы с удовольствием везде использовал UTF-8, но сейчас приходится работать с тем, что было сделано до меня и что переделывать довольно сложно.   -  person Alexey    schedule 21.04.2017


Ответы (1)


вы можете установить кодировку для JVM, которая выполняет RESTHeart с помощью -Dfile.encoding property.

Попробуйте что-то вроде:

java -Dfile.encoding=CP1251 -server -jar restheart.jar conf.yml
person Andrea Di Cesare    schedule 21.04.2017
comment
Спасибо Или java -Dfile.encoding=UTF8 -server -jar restheart.jar conf.yml - person Alexey; 24.04.2017