29 lines
745 B
JavaScript
29 lines
745 B
JavaScript
|
/*
|
||
|
* noVNC: HTML5 VNC client
|
||
|
* Copyright (C) 2019 The noVNC Authors
|
||
|
* Licensed under MPL 2.0 (see LICENSE.txt)
|
||
|
*
|
||
|
* See README.md for usage and integration instructions.
|
||
|
*/
|
||
|
|
||
|
// Decode from UTF-8
|
||
|
export function decodeUTF8(utf8string, allowLatin1=false) {
|
||
|
try {
|
||
|
return decodeURIComponent(escape(utf8string));
|
||
|
} catch (e) {
|
||
|
if (e instanceof URIError) {
|
||
|
if (allowLatin1) {
|
||
|
// If we allow Latin1 we can ignore any decoding fails
|
||
|
// and in these cases return the original string
|
||
|
return utf8string;
|
||
|
}
|
||
|
}
|
||
|
throw e;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Encode to UTF-8
|
||
|
export function encodeUTF8(DOMString) {
|
||
|
return unescape(encodeURIComponent(DOMString));
|
||
|
}
|