Javascript decodeURI不使用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=“

我一直在尝试解码文本,所以我可以采用unescape JSON编码。但是,当变量值为innerHTML时,我无法工作,但当我将相同的字符串值硬编码到变量时,它工作

innerHTML示例(我需要帮助)


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?