Lấy mã UTF-16 của ký tự trong chuỗi JavaScript (charCodeAt) | Laptrinhcanban.com

Lấy mã UTF-16 của ký tự trong chuỗi JavaScript (charCodeAt)

Hướng dẫn cách lấy mã UTF-16 của ký tự trong chuỗi JavaScript. Bạn sẽ học được cách sử dụng phương thức charCodeAt trong JavaScript để lấy mã UTF-16 của ký tự trong chuỗi JavaScript tại vị trí chỉ định sau bài học này.

Phương thức charCodeAt() trong JavaScript sẽ trả về mã UTF-16 của ký tự. Nếu bạn muốn tìm Unicode code Point của ký tự thì hãy sử dụng tới phương thức codePointAt().

Và trước khi sử dụng phương thức charCodeAt() để lấy mã UTF-16 của ký tự trong chuỗi JavaScript thì bạn cần phải hiểu mã UTF-16 là gì chứ nhỉ. Khái niệm mã UTF-16, sự khác biệt giữa mã UTF-16 với điểm mã Unicode, cũng như cách sử dụng phương thức codePointAt() đều có ở bài dưới đây:

charCodeAt() trong JavaScript

charCodeAt() là một phương thức của đối tượng String trong JavaScript, có tác dụng lấy mã UTF-16 của ký tự trong chuỗi ban đầu tại vị trí index chỉ định.

charCodeAt() trong JavaScript

Chúng ta sử dụng phương thức charCodeAt() với cú pháp sau đây:

str.charCodeAt(index)

Trong đó str là chuỗi ban đầu và charCodeAt sẽ lấy ra ký tự trong chuỗi tại vị trí index chỉ định. Lưu ý là chúng ta chỉ có thể sử dụng index dương có phạm vi từ 0 đến str.length - 1 mà thôi. Nếu lược bỏ index thì mặc định index sẽ bằng 0.

Và nếu chỉ định một index âm, hoặc là index nằm ngoài phạm vi index của chuỗi thì giá trị NaN sẽ được trả về.

Trong JavaScript, về mặc định thì các ký tự sẽ được lưu lại dưới dạng mã ký tự UTF-16 với một giá trị trong phạm vi từ 0 đến 65535 (0x0000 đến 0xFFFF), do đó kết quả của charCodeAt() cũng sẽ là một giá trị nằm trong phạm vi này.

Lưu ý, trong JavaScript thì ngoài các ký tự thông thường biểu diễn bởi một mã ký tự thì cũng tồn tại các ký tự đặc biệt Surrogate pair characters được biểu diễn bởi 2 mã ký tự. Do đó khi sử dụng charCodeAt() để tìm ra mã ký tự UTF-16 của các ký tự đặc biệt này thì kết quả trả về sẽ là 2 giá trị chứ không phải là 1 như thông thường.

Lấy mã UTF-16 của ký tự bình thường trong chuỗi JavaScript bằng charCodeAt()

Chúng ta sử dụng phương thức charCodeAt() để lấy mã UTF-16 của ký tự bình thường trong chuỗi JavaScript.

Hãy cùng xem các ví dụ cụ thể sau đây.

Ví dụ 1: sử dụng index dương để lấy mã UTF-16 của ký tự tại vị trí chỉ định

let word = 'tpHCM';

console.log(word.charCodeAt(0));
//> 116
console.log(word.charCodeAt(2));
//> 72
console.log(word.charCodeAt(4));
//> 77

Ví dụ 2: lược bỏ index khi sử dụng phương thức charAt

let word = 'tpHCM';

console.log(word.charCodeAt()); //Tương đương word.charCodeAt(0)
//> 116

Ví dụ 3: Giá trị NaN trả về khi sử dụng index nằm ngoài phạm vi có thể sử dụng

let word = 'tpHCM';
//Sử dụng index âm
console.log(word.charCodeAt(-3)); //NaN


//Sử dụng index nằm ngoài phạm vi index của chuỗi
console.log(word.charCodeAt(10)); //NaN

Ở ví dụ này thì do chúng ta chỉ định index nằm ngoài phạm vi có thể nên kết quả trả về sẽ chỉ là giá trị NaN mà thôi.

Lấy mã UTF-16 của ký tự Surrogate pair characters trong chuỗi JavaScript bằng charCodeAt()

Surrogate pair characters là các ký tự đặc biệt được biểu diễn một cặp ghép (pair) bao gồm 2 mã đại diện (Surrogate) là High surrogate (mã đại diện trên) và Low surrogates (mã đại diện dưới), ví dụ như là Emoji (❤️‍ hoặc là hán tự tiếng Trung chẳng hạn.

Lưu ý là khác với ký tự bình thường thì Surrogate pair characters do được biểu diễn bởi 2 mã ký tự nên kết quả trả về khi tìm mã UTF-16 của chúng cũng sẽ là 2 giá trị.

Ví dụ, chúng ta lấy mã UTF-16 của một ký tự Surrogate pair characters như sau:

let icon = '❤️‍';

console.log('High surrogate:',icon.charCodeAt(0));
console.log('Low surrogate:' ,icon.charCodeAt(1));
//> High surrogate: 10084
//> Low surrogate: 65039

Với một chuỗi ký tự Surrogate pair characters, do mỗi ký tự sẽ trả về 2 giá trị UTF-16, nên chúng ta cần phải chú ý lấy cách nhau 2 đơn vị nhé. Ví dụ:

let icons = '❤️‍👩';

console.log('Surrogate pair 1:',icons.charCodeAt(0), icons.charCodeAt(1) );
//> Surrogate pair 1: 10084 65039

console.log('Surrogate pair 2:',icons.charCodeAt(2), icons.charCodeAt(3) );
//> Surrogate pair 2: 8205 55357

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách lấy mã của ký tự trong chuỗi JavaScript tại vị trí chỉ định rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về JavaScript trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.