我遇到的问题是字符串被转换为其他字符串。像这样的东西 - > “geïnkt”正在转变为这种“geÃnkt”。在我的模板中,我有一个像这样的对象标签:
<object type="text/html" [data]="file"></object>
并在我的组件内:
const elem = document.createElement("textarea");
elem.innerHTML = this.sanitizer.sanitize(SecurityContext.NONE, this.content);
let url = ``data:text/html,${this.sanitizer.sanitize(SecurityContext.NONE, elem.value.replace(new RegExp('\r?\n','g'), '<br />'))}``;
this.file = this.sanitizer.bypassSecurityTrustResourceUrl(url);
所以,我正在做一些消毒。现在问题是当我检查元素时,我可以看到数据正确传递给data属性。但是一旦我进一步打开对象div,我就有了这样的结构:
#document -> <html><head></head><body><div xmlns="http://www.w3.org/1999/xhtml">geïnkt</div></body></html>
我尝试过使用字符集:UTF-8,但这也没有用。谁能帮我理解这里发生了什么?
答案 0 :(得分:0)
因此,当我在清理后尝试形成URL时,似乎编码是一个问题。我做了什么:
let url = ``data:text/html;charset=utf-8,${this.sanitizer.sanitize(SecurityContext.NONE, elem.value.replace(new RegExp('\r?\n','g'), '<br />'))}
;
也包含了charset编码,它正在运行。