Baseline Widely available
String
ç charCodeAt()
æ¹æ³è¿åä¸ä¸ªæ´æ°ï¼è¡¨ç¤ºç»å®ç´¢å¼å¤ç UTF-16 ç å
ï¼å
¶å¼ä»äº 0
å 65535
ä¹é´ã
charCodeAt()
æ¹æ³æ»æ¯å°å符串å½ä½ UTF-16 ç å
åºåè¿è¡ç´¢å¼ï¼å æ¤å®å¯è½è¿ååç¬ä»£ç项ï¼lone surrogateï¼ã妿è¦è·åç»å®ç´¢å¼å¤ç宿´ Unicode ç ä½ï¼è¯·ä½¿ç¨ String.prototype.codePointAt()
æ¹æ³ã
const sentence = "The quick brown fox jumps over the lazy dog.";
const index = 4;
console.log(
`Character code ${sentence.charCodeAt(index)} is equal to ${sentence.charAt(
index,
)}`,
);
// Expected output: "Character code 113 is equal to q"
è¯æ³ åæ°
index
è¦è¿åçå符çç´¢å¼ï¼ä»é¶å¼å§ãå°è¢«è½¬æ¢ä¸ºæ´æ°ââundefined
被转æ¢ä¸º 0ã
ä¸ä¸ªæ´æ°ï¼ä»äº 0
å 65535
ä¹é´ï¼è¡¨ç¤ºæå® index
å¤å符ç UTF-16 ç å
å¼ã妿 index
è¶
åºäº 0
å° str.length - 1
çèå´ï¼å charCodeAt()
è¿å NaN
ã
å符串ä¸çå符ä»å·¦å°å³è¿è¡ç´¢å¼ã第ä¸ä¸ªå符çç´¢å¼ä¸º 0
ï¼èå¨å为 str
çå符串ä¸ï¼æåä¸ä¸ªå符çç´¢å¼ä¸º str.length - 1
ã
Unicode ç ä½çèå´æ¯ 0
å° 1114111
ï¼0x10FFFF
ï¼ãcharCodeAt()
æ¹æ³å§ç»è¿åä¸ä¸ªå°äº 65536
çå¼ï¼å 为æ´é«çç ä½ç±ä¸å¯¹ 16 ä½ä»£ç伪å符ï¼surrogate pseudo-characterï¼æ¥è¡¨ç¤ºãå æ¤ï¼ä¸ºäºè·åå¼å¤§äº 65535
ç宿´å符ï¼ä¸ä»
éè¦æ£ç´¢ charCodeAt(i)
ï¼èä¸è¿è¦ä½¿ç¨ charCodeAt(i + 1)
ï¼å°±åæä½å
·æä¸¤ä¸ªå符çåç¬¦ä¸²ä¸æ ·ï¼ï¼æè
ä½¿ç¨ codePointAt(i)
æ¹æ³ãæå
³ Unicode çä¿¡æ¯ï¼è¯·åè§ UTF-16 å符ãUnicode ç ä½ååç´ ç°ã
以ä¸ç¤ºä¾è¿å 65
ï¼å³ A ç Unicode å¼ã
"ABC".charCodeAt(0); // è¿å 65
charCodeAt()
å¯è½ä¼è¿ååç¬ä»£ç项ï¼å®ä»¬ä¸æ¯ææç Unicode å符ã
const str = "ð ®·ð ®¾";
console.log(str.charCodeAt(0)); // 55362 æ d842ï¼ä¸æ¯ææç Unicode å符
console.log(str.charCodeAt(1)); // 57271 æ dfb7ï¼ä¸æ¯ææç Unicode å符
è¦è·åç»å®ç´¢å¼å¤ç宿´ Unicode ç ä½ï¼è¯·ä½¿ç¨ String.prototype.codePointAt()
æ¹æ³ã
const str = "ð ®·ð ®¾";
console.log(str.codePointAt(0)); // 134071
夿³¨ï¼ é¿å
ä½¿ç¨ charCodeAt()
æ¥éæ°å®ç° codePointAt()
ãä» UTF-16 代çå° Unicode ç ä½ç转æ¢ç¸å½å¤æï¼èä¸ codePointAt()
å¯è½æ´å 髿ï¼å 为å®ç´æ¥ä½¿ç¨å符串çå
é¨è¡¨ç¤ºå½¢å¼ã妿éè¦ï¼å¯ä»¥å®è£
ä¸ä¸ª codePointAt()
ç polyfillã
以䏿¯å°ä¸å¯¹ UTF-16 ç å 转æ¢ä¸º Unicode ç ä½çå¯è½ç®æ³ï¼æ¹ç¼èª Unicode 常é®é®é¢ï¼
// 常é
const LEAD_OFFSET = 0xd800 - (0x10000 >> 10);
const SURROGATE_OFFSET = 0x10000 - (0xd800 << 10) - 0xdc00;
function utf16ToUnicode(lead, trail) {
return (lead << 10) + trail + SURROGATE_OFFSET;
}
function unicodeToUTF16(codePoint) {
const lead = LEAD_OFFSET + (codePoint >> 10);
const trail = 0xdc00 + (codePoint & 0x3ff);
return [lead, trail];
}
const str = "ð ®·";
console.log(utf16ToUnicode(str.charCodeAt(0), str.charCodeAt(1))); // 134071
console.log(str.codePointAt(0)); // 134071
è§è æµè§å¨å
¼å®¹æ§ åè§
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