首页 > 解决方案 > 在 JS 中强制百分比编码

问题描述

如何对字符串进行百分比编码"ü",使其输出为"%C3%BC"

这是我当前的实现:

function percentEncode(ch) {
    return '%' + ch.codePointAt(0).toString(16).toUpperCase().padStart(2,'0');
}

但这会将其编码为'%FC'.

encodeURIComponent正确处理它,但我需要编码一些encodeURIComponent拒绝编码的字符,所以我不能使用它。

标签: javascript

解决方案


我想我想通了。

const UTF8_ENCODER = new TextEncoder();

function percentEncode(str) {
    return Array.from(UTF8_ENCODER.encode(str)).map(i => '%' + i.toString(16).toUpperCase().padStart(2,'0')).join('');
}

console.log(percentEncode('ü'))

信用


推荐阅读