더 설명하고 이해하려면 문자열 이스케이프 행동을, 다음과 같은 예를 취
이
당신은 따라서, 문자열이 문자열을 분할하여 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"]
는 기본적으로 단일 백 슬래시는 다음 문자를 빠져 나간다 이스케이프-문맥을 무시한 경우 따라서, 예상치 못한 결과를 초래하는 :이 문제를 해결 전위 (추한) 솔루션을 제공.
솔루션 : 룩업 테이블을 통해
, 당신은 그들이 \x20-\x7F
의 인쇄 가능한 ASCII 문자 범위 외부에있는 경우 많은 errantly 문자를 탈출 복원 할 수 있습니다. 예를 들어, 위 예의 경우 12
또는 \x0c
[12..toString(16)
]은 '\\'+'v'
이됩니다.
PS : 정보의 손실이 발생한 것을 알고 있어야합니다, 당신은 문자열이 인쇄 가능한 ASCII 범위에 귀하의 경우 의미 contextual- 또는 메타 정보를 통해 정보를 복원하기 위해 노력하고 있습니다.
모든 구현을 커뮤니티와 공유하십시오. 건배! 그것으로`;
가 사용할 수있는'.replace (/ \\/g, "\\\\"). 예를 들어 HTML 문서에 백 슬래시가 있으면'document.body.innerHTML.replace (/ \\/g, "\\\\");'로 이동하여 모든 백 슬래시를 이중 백 슬래시로 바꿉니다. – Viliami