@NewSantaClaus

Как сменить кодировку до/после получения данных с Google Sign In Identity?

Хелп ми плиз

Делаю авторизацию с помощью Google Sign In Identity

Авторизация проходит, данные юзера получаю. Но вот печаль. Когда у юреза имя и фамилия указаны на англ, то ок, а когда на русском то получаю крокозябры. Как выяснилось он отдаем данные в кодировке windows-1258, а я на странице использую utf-8. Как это исправить? Код прилагается

(function(){

  window.onGoogleLibraryLoad = function () {
    google.accounts.id.initialize({
      client_id: GOOGLE_APP_ID,
      callback: function(response){
        const payload = parseJwt(response.credential)
        saveUserData({
          first_name: payload.family_name,
          last_name: payload.given_name,
          email: payload.email
        })
      }
    })

    google.accounts.id.renderButton(
      document.querySelector(GOOGLE_BTN_AUTH),
      {
        theme: "outline",
        size: "large"
      }
    )

    google.accounts.id.prompt();
  }
})();


Как результат, при логине из разных учетных записей, получаю:
// ru
const user = {first_name: 'ФамилиÑ\x8F', last_name: 'Ð\x98мÑ\x8F', email: 'myemail@gmail.com'}

// en 
const user = {first_name: 'New', last_name: 'SantaClaus', email: 'myemail@gmail.com'}
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ответы на вопрос 1
Dr_Elvis
@Dr_Elvis
В гугле забанен
подобное у меня было, только перекодировал ответ от сервера, попробуйте, может получится переработать и применить у себя
function transformWindows1251ToUTF8(response) {
	const transformedBody = response.body
		.pipeThrough(new TextDecoderStream("windows-1251"))
		.pipeThrough(new TextEncoderStream("utf-8"));
	return new Response(transformedBody);
}

fetch(`http://example.com`)
.then(transformWindows1251ToUTF8)
.then(response => response.text())
.then(function(data) {
	console.log(data);
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы