Javascript decodeURI不使用innerHTML文本
我一直在尝试解码文本,所以我可以采用unescape JSON编码。但是,当变量值为innerHTML时,我无法工作,但当我将相同的字符串值硬编码到变量时,它工作 innerHTML示例(我需要帮助)Javascript decodeURI不使用innerHTML文本,javascript,html,json,decode,decodeuricomponent,Javascript,Html,Json,Decode,Decodeuricomponent,我一直在尝试解码文本,所以我可以采用unescape JSON编码。但是,当变量值为innerHTML时,我无法工作,但当我将相同的字符串值硬编码到变量时,它工作 innerHTML示例(我需要帮助) C:\\Users\\User\\Documents\\Fax 试试看 函数myFunction(){ var uri=document.getElementById(“uri”).innerText; var dec=decodeURI(uri.toString()); var res=“
C:\\Users\\User\\Documents\\Fax
试试看
函数myFunction(){
var uri=document.getElementById(“uri”).innerText;
var dec=decodeURI(uri.toString());
var res=“解码URI:+dec;
document.getElementById(“demo”).innerHTML=res;
}
行:
var uri = "C:\\Users\\User\\Documents\\Fax";
var uri = document.getElementById("uri").innerText;
实际上将uri
设置为C:\Users\User\Documents\Fax
。因为您只是创建了一个带有反斜杠的字符串
该行:
var uri = "C:\\Users\\User\\Documents\\Fax";
var uri = document.getElementById("uri").innerText;
将uri
设置为C:\\Users\\User\\Documents\\Fax
,每个位置有两个反斜杠
如果希望字符串解决方案的行为相同,则需要在创建字符串时再次转义反斜杠。(即var uri=“C:\\\\Users\\\\User\\\\Documents\\\\Fax”
)
要使第一个版本像第二个版本一样工作,可以使用正则表达式替换将
C:\\Users\\User\\Documents\\Fax
更改为C:\Users\User\Documents\Fax
(或者如果可能,只需将html元素更改为包含C:\Users\User\Documents\Fax
)
正则表达式解决方案:
C:\\Users\\User\\Documents\\Fax
试试看
函数myFunction(){
var uri=document.getElementById(“uri”).innerText.replace(/\\\\\/g,“\\”);
console.log(“uri=”+uri);
var dec=decodeURI(uri.toString());
var res=“解码URI:+dec;
document.getElementById(“demo”).innerHTML=res;
}
使用编码的URI进行解码,否则我们看不到区别。
my%20test.asp?name=st%C3%A5le&car=saab
试试看
函数myFunction(){
var uri=document.getElementById(“uri”).innerText;
var dec=decodeURI(uri.toString());
var res=“解码URI:+dec;
document.getElementById(“demo”).innerHTML=res;
}
该文本不是URI编码的。事实上,它根本不是一个真正的URI;这是一个Windows文件路径。这是一个简化的示例,但在我的实际应用程序中,“\”被转换为“\\”,并且在提交时每个回车符都被转换为\r on。为什么这里要讨论JSON?我看不到任何JSON在这里被使用。我看到了你在用replace做什么,虽然它适用于“\\”用例,decodeURI仍然忽略解码\n\r它添加到我的字符串中的其他JSON空间字符。@DN0300看起来你只是想删除从变量中转义的所有反斜杠。在这种情况下,JSON.parse
应该是您所需要的全部。这应该可以工作:JSON.parse(`“${document.getElementById(“uri”).innerText}`)
(或参阅我答案末尾添加的完整示例)。@DN0300如lakshitha所说,decodeURI
用于十六进制编码字符串,如“%5C%20%C3”
,而不是反斜杠转义字符串,因此它对字符串没有任何作用。是否有类似于json.Parse的内容可用于innerHtml?