From 3b57919252cc3f2e5f98db5fbabeb047593e6271 Mon Sep 17 00:00:00 2001 From: Vasile Popescu Date: Wed, 3 Jul 2019 22:56:47 +0200 Subject: [PATCH] Fix utf8 encoded strings by using a different base64 decoder --- frontend/tty-receiver/base64.js | 11 ++++++++++- frontend/tty-receiver/tty-receiver.ts | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/frontend/tty-receiver/base64.js b/frontend/tty-receiver/base64.js index 2de38b0..7888a97 100644 --- a/frontend/tty-receiver/base64.js +++ b/frontend/tty-receiver/base64.js @@ -140,8 +140,17 @@ var Base64 = { } return string; - } + }, + base64ToArrayBuffer: function (input) { + var binary_string = window.atob(input); + var len = binary_string.length; + var bytes = new Uint8Array( len ); + for (var i = 0; i < len; i++) { + bytes[i] = binary_string.charCodeAt(i); + } + return bytes; + } } export default Base64; \ No newline at end of file diff --git a/frontend/tty-receiver/tty-receiver.ts b/frontend/tty-receiver/tty-receiver.ts index b71bde6..617d4b8 100644 --- a/frontend/tty-receiver/tty-receiver.ts +++ b/frontend/tty-receiver/tty-receiver.ts @@ -45,7 +45,7 @@ class TTYReceiver { if (message.Type === "Write") { let writeMsg = JSON.parse(msgData) - this.xterminal.write(base64.decode(writeMsg.Data)) + this.xterminal.writeUtf8(base64.base64ToArrayBuffer(writeMsg.Data)); } if (message.Type == "WinSize") {