Javascript 在HTML页面中输出“\xA0”或“\xC2A0”可以吗,还是需要将其转义为“&;什么?

Javascript 在HTML页面中输出“\xA0”或“\xC2A0”可以吗,还是需要将其转义为“&;什么?,javascript,html,encoding,Javascript,Html,Encoding,我有一个很大的JS代码库,并不是我能控制的所有代码库,我们在语言环境文件中使用非中断空格,用于实际使用的非中断空格(防止换行) 目前,这些非中断空格在.yml文件中指定为\\,我们的YAML加载器将其替换为\xA0(实际的字节160,而不是转义序列,它是nbsp的ASCII),并且\xA0将直接输出到浏览器 据我所知,这些确实有效。他们没有被包裹。但考虑到的存在,直接输出ASCII码感觉“不对” 我已经在谷歌上搜索了很长一段时间,但是我找不到关于这个的任何信息 可以将\xA0(实际字节160,而

我有一个很大的JS代码库,并不是我能控制的所有代码库,我们在语言环境文件中使用非中断空格,用于实际使用的非中断空格(防止换行)

目前,这些非中断空格在
.yml
文件中指定为
\\
,我们的YAML加载器将其替换为
\xA0
(实际的字节160,而不是转义序列,它是nbsp的ASCII),并且
\xA0
将直接输出到浏览器

据我所知,这些确实有效。他们没有被包裹。但考虑到
的存在,直接输出ASCII码感觉“不对”

我已经在谷歌上搜索了很长一段时间,但是我找不到关于这个的任何信息


可以将
\xA0
(实际字节160,而不是转义序列)作为HTML的一部分输出吗?或者我应该始终编码为
?(如果是后者,为什么?缺点是什么?

通过JavaScript字符串将HTML中的无空格打印为
\xA0
转义序列实际上是打印实际的无空格字符本身


因为在HTML中没有空格没有任何特殊意义,所以直接打印字符还是使用字符引用都没有意义。(无法处理UTF-8编码的HTML的用户代理可能会有所不同,但我怀疑这是一个理论问题。)

\xA0
不是ASCII,它是一个转义序列,可以在JS字符串中使用。如果您正在编写HTML字符串,则只会使用
。但你不是,你在处理DOM,对吗?@bergi,是的,我的意思是它正在输出实际的角色160。我只是没有更好的表达方式,因为它与普通空间无法区分。至于HTML字符串与DOM,还不能完全确定您的意思。您是在编写与浏览器DOM交互的客户端js代码,还是在编写发出HTML的js代码?HTML使用Unicode代码点编码,使用文档编码,允许命名和数字字符实体引用。您是在问是否应该避免编码,而是使用命名字符实体引用?JavaScript和YAML只是背景信息?但是,如果服务器没有用适当的
内容类型
注释UTF8编码的HTML,这是一个(实际的)问题。@Bergi:这是真的,特别是当服务器配置不在作者的控制范围内时。为了澄清,没有使用转义序列。这是我唯一能描述角色的方式。输出的是实际的二进制字符160。如中所示,与以下内容的输出相同:String.fromCharCode(160)@Daniel Magliola:在这种情况下,您将输出字符本身,这更简单:D也就是说,我的第二段与以前完全一样适用。