Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Изменить кодировку строки (https://javascript.ru/forum/misc/40203-izmenit-kodirovku-stroki.html)

Romaboy 27.07.2013 22:05

Изменить кодировку строки
 
От гугла приходит ответ на мой http запрос, этот ответ типа string и содержит русские буквы, но они выводятся вопросиками. Как их в utf-8 перекодировать? <meta charser='utf8'> есть

Romaboy 27.07.2013 22:34

А при попытке сохранить ответ в файл, там вместо русских букв лишь "эээээ". Забавно, но всё же надеюсь на вашу помощь.

Deff 27.07.2013 22:34

Romaboy,
1. Инет страница с образцом - есть ?
2. Какую кодировку получаете от гугла ?
3. Гугл отдает через Ваш сервер или через своё АPI сразу на клиента ?
или... ?
поскольку странно - ибо гугл обычно в UTF8 и отдаёт

Romaboy 27.07.2013 22:52

var options = {
  host: 'translate.google.ru',
  path: '/translate_a/t?client=x&text=koko&sl=en&tl=ru
};

callback = function(response) {
  var str = '';
  response.on('data', function (chunk) { // Сдесь в chunk принимается ответ в непонятной кодировке
    str += chunk;
  });
  response.on('end', function () {
    alert(str)
  });
}

http.request(options, callback).end();

Знаю, что для node есть раздел, но я думал можно стандартным js перекодировать. Гугл отдаёт через http запрос. Понятия не имею, какая кодировка у вопросиков.

Romaboy 27.07.2013 22:54

Нет, транслейт тут ни при чем: если браузер эту ссылку откроет, то сохранится файл с корректными буквами, нужно с нодом разбираться.

Deff 27.07.2013 22:59

Romaboy,
я думаю текущая страница с http.request(options, callback) не в UTF8

Проще в чистом фрейме создать новый документ с нужной кодировкой и запрос сделать там и вернуть на top.document

Romaboy 27.07.2013 23:13

Как у текущей страницы кодировку изменить? Зачем новые документы создавать, нельзя существующий перекодировать?

рони 27.07.2013 23:20

Romaboy,
к вам приходит обьект а вы его как текст читаите

Romaboy 27.07.2013 23:30

Действительно, чанк это buffer.
str = chunk.toString('utf8', 0, chunk.length)

Перевожу буффер в строку с кодировкой utf8 - всё равно вопросики, что же делать?

рони 27.07.2013 23:43

Romaboy,
var obj = {"sentences":[{"trans":"Коко","orig":"koko","translit":"Koko","src_translit":""}],"src":"en","server_time":26}; //это вы получаите
var text = '{"sentences":[{"trans":"РљРѕРєРѕ","orig":"koko","translit":"Koko","src_translit":""}],"src":"en","server_time":26}'


Часовой пояс GMT +3, время: 16:00.