Чтобы лучше продемонстрировать и понять -струнной избежать поведения, следующий пример:
Вы можете увидеть, что строка выглядит в памяти после того, как разбирается в JS-движка, разбивая строку, таким образом, также предлагая потенциальные (уродливые) решения этой проблемы:
'file:///C:\funstuff\buildtools\viewer.html'.split('')
//>
["f", "i", "l", "e", ":", "/", "/", "/", "C", ":", "", "u", "n", "s", "t", "u",
"f", "f", "", "u", "i", "l", "d", "t", "o", "o", "l", "s", "", "i", "e", "w",
"e", "r", ".", "h", "t", "m", "l"]
'file:///C:\funstuff\buildtools\viewer.html'.split('').map(function(e){
return e.charCodeAt()
});
//>
[102, 105, 108, 101, 58, 47, 47, 47, 67, 58, 12, 117, 110, 115, 116, 117, 102,
102, 8, 117, 105, 108, 100, 116, 111, 111, 108, 115, 11, 105, 101, 119, 101,
114, 46, 104, 116, 109, 108]
//>in Hex values by applying .toString(16)
["66", "69", "6c", "65", "3a", "2f", "2f", "2f", "43", "3a", "c", "75", "6e",
"73", "74", "75", "66", "66", "8", "75", "69", "6c", "64", "74", "6f", "6f",
"6c", "73", "b", "69", "65", "77", "65", "72", "2e", "68", "74", "6d", "6c"]
в основном одиночный обратный слеш следующего символа, таким образом, что приводит к неожиданным результатам, если маскирование-контекст не прислушался.
Решение:
Через просмотрового стол, вы можете восстановить многие errantly экранированных символы, если они лежат вне области печати диапазона ASCII символов в \x20-\x7F
. Например, для примера, приведенного выше, 12
или \x0c
[12..toString(16)
] станет '\\'+'v'
и т. Д.
PS: Имейте в виду, что потеря информации произошла, и вы пытаетесь восстановить информацию через contextual- или метаинформации, то есть в вашем случае, что строка находится в печати диапазона ASCII.
Пожалуйста, поделитесь своими идеями с сообществом. Ура!
Если вы храните обратный слэш в HTML вы можете использовать '.Надеть (/ \\/г, "\\\\");' с ним. например, если в документе HTML есть обратная косая черта, вы можете пойти 'document.body.innerHTML.replace (/ \\/g," \\\\ ");', который заменит все обратные косые черты двойным обратным слэшем. – Viliami