如果字符串包含间隔中的字符U+D800..U+DFFF,则encodeURIComponent()抛出malformed URI sequence错误。我想在将给定字符串传递给encodeURIComponent(). 怎么做?示例:我有一个以 UTF-16BE 编码的文本文件,其中包含以下六进制字符:D7FF D800 D801 ... DFFE DFFF E000我正在搜索一个从上面的字符串返回这个字符串的函数:D7FF E000因此只保留有效的 Unicode 字符。
1 回答
千万里不及你
TA贡献1784条经验 获得超9个赞
您可以使用replace
/encodeURIComponent
组合来获得所需的结果。您首先需要使用此正则表达式匹配所有不属于 unicode 范围的字符[0xD800..0xDFFF]
:/[^\uD800-\uDFFF]+/g
然后用它们的编码版本替换它们:
let result = string.replace(/[^\uD800-\uDFFF]+/g, match => encodeURIComponent(match));
例子:
let string = "/foo/\uD7FF\uD800\uD801/bar";
let result = string.replace(/[^\uD800-\uDFFF]+/g, match => encodeURIComponent(match));
console.log(result);
添加回答
举报
0/150
提交
取消