Convert Telnet output to the correct charset as well

This commit is contained in:
NI
2019-09-15 06:51:38 +08:00
parent 462a07aebf
commit 10c0cc2e73
5 changed files with 23 additions and 9 deletions

View File

@@ -46,13 +46,10 @@ export const charsetPresets = [
"windows-1256",
"windows-1257",
"windows-1258",
"x-mac-cyrillic",
"gbk",
"gb18030",
"hz-gb-2312",
"big5",
"euc-jp",
"iso-2022-jp",
"shift-jis",
"euc-kr",
"iso-2022-kr",

View File

@@ -15,6 +15,8 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import * as iconv from "iconv-lite";
import * as subscribe from "../stream/subscribe.js";
import * as reader from "../stream/reader.js";
import * as color from "../commands/color.js";
@@ -331,12 +333,14 @@ class Control {
this.colorM = color;
this.colors = this.colorM.get();
if (!data.charset || data.charset === "utf-8") {
this.charset = data.charset;
if (this.charset === "utf-8") {
this.charsetDecoder = d => {
return d;
};
} else {
let dec = new TextDecoder(data.charset),
let dec = new TextDecoder(this.charset),
enc = new TextEncoder();
this.charsetDecoder = d => {
@@ -449,7 +453,7 @@ class Control {
}
let currentLen = 0;
const enc = new TextEncoder("utf-8").encode(data);
const enc = new iconv.encode(data, this.charset);
while (currentLen < enc.length) {
const iacPos = this.searchNextIAC(currentLen, enc);