HTML特殊符号显示成了字符

4

我一直在尝试使用JS动态设置文本输入框的内容,遇到的问题是浏览器无法呈现特殊符号而不是字符,例如

document.getElementById("textField").value = "nbsp";

不要显示空格,而是显示 &nbsp,请问有什么想法吗?

非常感谢。


尝试这个:https://dev59.com/tXRA5IYBdhLWcg3w6SRH#784611 - Voonic
@shadow:这不是他想要的。他希望在文本框中输入特殊字符,例如不间断空格。他不需要它的HTML实体。 - Joe Simmons
问题中的代码没有描述的效果。你是不是实际上意思是使用"&nbsp"而不仅仅是"nbsp" - Jukka K. Korpela
5个回答

4

看起来您想在JavaScript字符串文字中输入特殊字符,例如NO-BREAK SPACE。只要包含JavaScript代码的文件的字符编码已正确声明,您就可以直接这样做,因为无论如何都应该这样做:

document.getElementById("textField").value = ' ';

这里单引号之间的字符是真正的NO-BREAK SPACE字符。在渲染时,它通常与普通的SPACE不可区分,但具有不同的效果。类似地,您可以写例如:

document.getElementById("textField").value = 'Ω';

直接使用希腊字母大写的omega。

如果您不知道如何输入这样的字符(例如,通过Windows CharMap程序)或者您无法控制字符编码问题,您可以使用JavaScript Unicode转义符号 来表示字符,例如:

document.getElementById("textField").value = '\u00A0'; // no-break space

或者

document.getElementById("textField").value = '\u03A9'; // capital omega

对于Unicode编号小于0x100的一小部分字符,您可以使用\x转义代替,例如'\xA0'而不是'\u00A0'。(但如果您不知道这一点,最好学习使用通用的\u转义。)


1

 是HTML实体,你不能像那样把HTML实体放在文本字段中。


尝试使用Unicode,像这样:

document.getElementById("textField").value = '\xA0';

0

使用jQuery和这个怎么样:

$("#textField").html('&nbsp').text()

或者更一般地说:

$(element).html(encodedString).text()

0
document.getElementById("textField").value = " ";

0

你应该使用“ ”而不是“nbsp”


关于角度符号和箭头符号怎么办?我该如何输入它们?&nbsp仅在此处作为示例,我试图说明问题。 - user1935724
&(和号)变成 & "(双引号)变成 " '(单引号)变成 ' <(小于号)变成 <
(大于号)变成 > 您需要将每个字符转换为其特定的HTML条目,您可以使用简单的PHP函数htmlspecialchars()函数将特殊字符转换为HTML条目。 或者您可以使用<pre>标签来显示在此标签内编写的所有字符。
- user2533777
这样做比只是使用$(element).html(encodedString).text()更容易吗? - user1935724
有很多方法可以完成同一件事情,取决于你喜欢哪种方式。 - user2533777

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接