为了账号安全,请及时绑定邮箱和手机立即绑定

在将字符串传递给 encodeURIComponent() 之前从字符串中排除字符

在将字符串传递给 encodeURIComponent() 之前从字符串中排除字符

慕斯709654 2023-04-27 17:09:21
如果字符串包含间隔中的字符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);



查看完整回答
反对 回复 2023-04-27
  • 1 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信