我正在Spotiy框架内构建个人应用程序。我的曲目和艺术家头衔有问题,有特殊的特殊字符,如单/双引号,&符号......等等。
在挖掘解决方案时,我发现hack使用了replace()方法。但是后来又做了一点挖掘,我发现了一个来自Spotify本身的示例代码,并发现了一些奇怪的东西。基本上,当示例代码收集了轨道信息,然后将其显示在
标签的innerHTML属性中时,轨道标题正确显示了特殊字符,但是当我尝试在alert()中显示信息时或者作为一个文本框中的值,标题出来时特殊字符搞砸了。
同样,我可以使用replace()方法解决这个问题,但我很想知道为什么会出现这种情况(也就是说innerHTML显示正确与警报和文本框错误)。
这是我使用的代码:
编辑:
从我读到的内容看起来像innerHTML实际上将特殊字符编码为常见的Web表单。但由于我将值放入文本框,因此我制作了自己的过滤器:
答案 0 :(得分:0)
首先,阅读HTML编码和(例如)innerHTML和innerText之间的区别(以及不正确处理这两者之间差异的XSS安全含义!)
现在,Spotify Api(至少是Spotify应用程序中的一个; Web API工作方式不同)返回默认HTML编码的值。
如果您确定要对字符串进行文本编码,请对字符串使用decodeForText()方法(所以var textname = data.name.decodeForText();
)。