【问题标题】:Changing Unicode symbols (") to the equivalent html symbol (")将 Unicode 符号 (") 更改为等效的 html 符号 (")
【发布时间】:2020-07-23 15:47:54
【问题描述】:

我正在开发一个 react (JavaScript, html) 项目,我们在其中调用一个 google 搜索 api,该 api 返回带有搜索结果内容的标题。目前,当我们得到结果时,它们是 Unicode 格式的,例如

this isn't what I want

我想要的就是它

 this isn't what i want

我会做一个 string.replace 但是有多个不同的代码,如果不冗长,我无法解释它们。关于如何改变这一点有什么建议吗?

【问题讨论】:

标签: javascript html reactjs api unicode


【解决方案1】:

您可以简单地创建一个元素,将其 HTML 内容设置为您的编码字符串,然后取回其文本内容。

const encodedResults = 'this isn't what I want';
const div = document.createElement('div');
div.innerHTML = encodedResults;
const decodedResults = div.textContent; // this isn't what i want

编辑:@Mr Lister提到上述方法仅在输入不包含实际html标签时有效。

对于包含 html 标签的输入,你可以创建一个 textarea,设置它的内容,然后取回它的值。

const encodedResults = 'this <i>isn&#39;t</i> what I want';
const textarea = document.createElement('textarea');
textarea.innerHTML = encodedResults;
const decodedResults = textarea.value; // this <i>isn't</i> what i want

【讨论】:

  • 很高兴为您提供帮助,欢迎来到 Stack Overflow。如果此答案解决了您的问题,请考虑将其标记为已接受 :)
  • @MrLister 你说得对,我编辑了我的答案以包含一种替代方法,它创建一个textarea 而不是div
  • @over-engineer 哦,那很好; textareas 具有 PCDATA 内容模型,因此它们不处理 html 标签。没想到这一点,否则我会自己发布答案!
猜你喜欢
  • 2018-10-15
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 2011-08-14
  • 2013-02-01
  • 2015-03-07
相关资源
最近更新 更多