[英]Create invalid UTF8 string
是否可以使用 Javascript 创建无效的 UTF8 字符串?
我找到的每个解决方案都依赖String.fromCharCode
,它生成undefined
而不是无效的字符串。 我已经看到提到由格式错误的 UTF8 字符串(即https://developer.mozilla.org/en-US/docs/Web/API/WebSocket#send() )生成的错误,但我无法弄清楚您将如何实际创建一个。
JavaScript 中的字符串是 UTF-16 代码单元的计数序列。 代码单元表示 Unicode 代码点有一个隐含的约定。 即便如此,也可以表示任何 UTF-16 代码单元序列——甚至是未配对的代理。
我发现String.fromCharCode(0xd801)
返回替换字符,这看起来很合理(而不是undefined
)。 任何文本函数都可能这样做,但出于效率原因,我确信许多文本操作只会传递无效序列,除非操作需要将它们解释为代码点。
创建此类字符串的最简单方法是使用字符串文字。 例如, "\? \?"
或"\?"
或"\?"
而不是有效的"\?\?"
。
"\? \?".replace(" ","")
实际上确实返回了"\?\?"
( "🚲"
) 但我认为你不应该指望来自不是一个字符串的任何好处Unicode 代码点的有效 UTF-16 编码。
使用 JavaScript 生成无效 UTF-8 字符串的一种方法是采用表情符号并删除最后一个字节。
例如,这将是一个无效的 UTF-8 字符串:
const invalidUtf8 = '🐶🐶🐶'.substr(0,5);
根据这个答案 ,
UTF-8是Unicode的一种编码,可以表示人类历史记录中存在的几乎每个字符和字形,因此在某种程度上没有“无效”的UTF-8字符。
所以, 不 ,这是不可能产生无效的UTF-8字符。 每个字符都是有效的UTF-8。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.