Baseline 2023
Newly available
String
ç toWellFormed()
æ¹æ³è¿åä¸ä¸ªå符串ï¼å
¶ä¸è¯¥åç¬¦ä¸²çææåç¬ä»£ç项é½è¢«æ¿æ¢ä¸º Unicode æ¿æ¢å符 U+FFFDã
æ°çå符串æ¯åå符串çä¸ä¸ªæ·è´ï¼å
¶ä¸ææçåç¬ä»£çé¡¹è¢«æ¿æ¢ä¸º Unicode æ¿æ¢å符 U+FFFDã妿 str
æ¯æ ¼å¼æ£ç¡®çï¼ä»ç¶ä¼è¿åä¸ä¸ªæ°åç¬¦ä¸²ï¼æ¬è´¨ä¸æ¯ str
çä¸ä¸ªæ·è´ï¼ã
JavaScript ä¸çåç¬¦ä¸²æ¯ UTF-16 ç¼ç çãUTF-16 ç¼ç 䏿代çå¯¹çæ¦å¿µï¼è¿ä¸æ¦å¿µå¨ UTF-16 å符ãUnicode ç ä½ååç´ ç°é¨åæè¯¦ç»ä»ç»ã
toWellFormed()
è¿ä»£å符串çç å
ï¼å¹¶å°ä»»ä½åç¬ä»£çé¡¹æ¿æ¢ä¸º Unicode æ¿æ¢å符 U+FFFD �
ãè¿ç¡®ä¿äºè¿åçåç¬¦ä¸²æ ¼å¼æ£ç¡®å¹¶å¯ç¨äºæææ£ç¡®æ ¼å¼å符串ç彿°ï¼æ¯å¦ encodeURI
ãç±äºå¼æè½å¤ç´æ¥è®¿é®å符串çå
é¨è¡¨ç¤ºï¼ä¸èªå®ä¹å®ç°ç¸æ¯ toWellFormed()
æ´é«æã
å½å¨æäºä¸ä¸æä¸ä½¿ç¨æ ¼å¼ä¸æ£ç¡®çå符串æ¶ï¼ä¾å¦ TextEncoder
ï¼å®ä»¬ä¼èªå¨è½¬æ¢ä¸ºä½¿ç¨ç¸åæ¿æ¢åç¬¦çæ ¼å¼æ£ç¡®çå符串ãå½åç¬ä»£ç项被åç°æ¶ï¼å®ä»¬ä¹ä¼åç°ä¸ºæ¿æ¢å符ï¼ä¸ä¸ªå¸¦æé®å·çé»ç³å½¢ç¶ï¼ã
const strings = [
// åç¬çå导代ç
"ab\uD800",
"ab\uD800c",
// åç¬çå尾代ç
"\uDFFFab",
"c\uDFFFab",
// æ ¼å¼æ£ç¡®
"abc",
"ab\uD83D\uDE04c",
];
for (const str of strings) {
console.log(str.toWellFormed());
}
// Logs:
// "ab�"
// "ab�c"
// "�ab"
// "c�ab"
// "abc"
// "abðc"
é¿å
encodeURI() é误
å¦æä¼ éçåç¬¦ä¸²æ ¼å¼ä¸æ£ç¡®ï¼ encodeURI
伿åºé误ãå¯ä»¥å
éè¿ä½¿ç¨ toWellFormed()
å°å符串转æ¢ä¸ºæ ¼å¼æ£ç¡®çå符串æ¥é¿å
è¿ç§æ
åµã
const illFormed = "https://example.com/search?q=\uD800";
try {
encodeURI(illFormed);
} catch (e) {
console.log(e); // URIError: URI malformed
}
console.log(encodeURI(illFormed.toWellFormed())); // "https://example.com/search?q=%EF%BF%BD"
è§è æµè§å¨å
¼å®¹æ§ åè§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4