Javascript 创建无效的UTF8字符串

Javascript 创建无效的UTF8字符串,javascript,utf-8,Javascript,Utf 8,是否可以使用Javascript创建无效的UTF8字符串 我找到的每个解决方案都依赖于String.fromCharCode,它生成未定义的,而不是无效的字符串。我看到有人提到错误是由格式错误的UTF8字符串(即)生成的,但我不知道如何创建错误。JavaScript中的字符串是UTF-16代码单元的计数序列。有一个隐式约定,即代码单元表示Unicode代码点。即使如此,也可以表示UTF-16代码单元的任何序列,甚至是未配对的代理 我发现String.fromCharCode(0xd801)返回替

是否可以使用Javascript创建无效的UTF8字符串


我找到的每个解决方案都依赖于
String.fromCharCode
,它生成
未定义的
,而不是无效的字符串。我看到有人提到错误是由格式错误的UTF8字符串(即)生成的,但我不知道如何创建错误。

JavaScript中的字符串是UTF-16代码单元的计数序列。有一个隐式约定,即代码单元表示Unicode代码点。即使如此,也可以表示UTF-16代码单元的任何序列,甚至是未配对的代理

我发现
String.fromCharCode(0xd801)
返回替换字符,这似乎很合理(而不是
未定义的
)。任何文本函数都可以这样做,但出于效率考虑,我确信许多文本操作只会传递无效序列,除非操作需要将它们解释为代码点

创建此类字符串的最简单方法是使用字符串文本。例如,
“\uD83D\uDEB2”
“\uD83D”
“\uDEB2”
而不是有效的
“\uD83D\uDEB2”


替换(“,”)实际上返回
“\uD83D\uDEB2”
”使用JavaScript生成无效UTF-8字符串的一种方法是使用表情符号并删除最后一个字节

例如,这将是无效的UTF-8字符串:


const invalidUtf8='这里提到的错误与UTF-8字符串无关,javascript通常不在内部使用UTF-8表示字符串。@pvg:感谢您指出错误。我不确定为什么我假设UTF8是javascript编码。我的问题应该更具体一些:如何创建包含unpair的字符串ed代理?我不完全确定,文档看起来很模糊,尽管它可以触及javascript字符串的内部,做很多奇怪的事情,而不会让事情立即着火。这正是我所希望的;)出于测试目的,我正在尝试可靠地在websocket中生成一个错误。不幸的是,您提供的字符串文字被转换为两个用空格分隔的替换字符(至少在Chrome中是这样)。感谢您提供的信息。了解这些信息仍然很有用。