Baseline 2023
Newly available
String
å¼ç isWellFormed()
æ¹æ³è¿åä¸ä¸ªè¡¨ç¤ºè¯¥å符串æ¯å¦å
å«åç¬ä»£ç项çå¸å°å¼ã
妿å符串ä¸å
å«åç¬ä»£ç项ï¼è¿å true
ï¼å¦åè¿å false
ã
JavaScript ä¸çåç¬¦ä¸²æ¯ UTF-16 ç¼ç çãUTF-16 ç¼ç 䏿代çå¯¹çæ¦å¿µï¼è¿ä¸æ¦å¿µå¨ UTF-16 å符ãUnicode ç ä½ååç´ ç°é¨åæè¯¦ç»ä»ç»ã
isWellFormed()
è®©ä½ è½å¤æµè¯ä¸ä¸ªå符串æ¯å¦æ¯æ ¼å¼æ£ç¡®çï¼å³ä¸å
å«åç¬ä»£ç项ï¼ãç±äºå¼æè½å¤ç´æ¥è®¿é®å符串çå
é¨è¡¨ç¤ºï¼ä¸èªå®ä¹å®ç°ç¸æ¯ isWellFormed()
æ´é«æãå¦æä½ éè¦å°å符串转æ¢ä¸ºæ ¼å¼æ£ç¡®çå符串ï¼å¯ä»¥ä½¿ç¨ toWellFormed()
æ¹æ³ãisWellFormed()
è®©ä½ å¯ä»¥å¯¹æ ¼å¼æ£ç¡®åæ ¼å¼é误çå符串è¿è¡ä¸åçå¤çï¼æ¯å¦æåºä¸ä¸ªé误æå°å
¶æ è®°ä¸ºæ æã
const strings = [
// åç¬çå导代ç
"ab\uD800",
"ab\uD800c",
// åç¬çå尾代ç
"\uDFFFab",
"c\uDFFFab",
// æ ¼å¼æ£ç¡®
"abc",
"ab\uD83D\uDE04c",
];
for (const str of strings) {
console.log(str.isWellFormed());
}
// è¾åºï¼
// false
// false
// false
// false
// true
// true
é¿å
encodeURI() é误
å¦æä¼ éçåç¬¦ä¸²æ ¼å¼ä¸æ£ç¡®ï¼ encodeURI
伿åºé误ãå¯ä»¥éè¿ä½¿ç¨ isWellFormed()
å¨å°åç¬¦ä¸²ä¼ éç» encodeURI()
ä¹åæµè¯å符串æ¥é¿å
è¿ç§æ
åµã
const illFormed = "https://example.com/search?q=\uD800";
try {
encodeURI(illFormed);
} catch (e) {
console.log(e); // URIError: URI malformed
}
if (illFormed.isWellFormed()) {
console.log(encodeURI(illFormed));
} else {
console.warn("Ill-formed strings encountered."); // Ill-formed strings encountered.
}
è§è æµè§å¨å
¼å®¹æ§ åè§
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