Chuyển chuỗi thành mã unicode?

Phải làm sao để chuyển 1 chuỗi thành mã unicode ?
ví dụ “A” có mã unicode là 41, vậy chuỗi “ABC” có mã là gì ? kiểu như là "A".compareTo("B") thì ra -1 vì “A” là 41, “B” là 42. vậy "Nguyen Van A".compareTo("Le Thi B") thì ra 1 số gì đó. vậy mình làm sao biết được “Nguyen Van A”, “Le Thi B” là số bao nhiêu ? không biết mình nói có ai hiểu không nhỉ ? tìm trên mang thì có Integer.parseInt(chuỗi) nhưng bị lỗi không in ra console được !

Cái này chỉ dùng để ép kiểu thôi :smiley: chứ đọc codepoint thì có mà bạc đầu :smiley:

1 Like

Phải dùng loop để parse từng kí tự nhé

3 Likes

utf8 có độ dài 1-4 byte mà :dizzy_face:

parse từng ký tự thành code unicode tương ứng xong vẫn ko thể so sánh được :V

3 Likes

Các kí tự Unicode được lưu trữ trong 2 byte (UTF-16) trên RAM nên so sánh từng kí tự vẫn được. Lưu trên ổ đĩa thì có UTF-8, UTF-16, và một số dạng không dùng nhiều.

Mỗi ký tự tốn 1 số. Cả chuỗi “ABC” sẽ phải tốn 3 số. Đại loại thế.

biết là số bao nhiêu ko quan trọng, chỉ cần xét số đó == 0, > 0 hay < 0 là được rồi

1 Like

Bạn compare chuỗi thì nếu chuỗi giống nhau là 0 còn khác thì nó không giống nhau. Chủ yếu bài toán bạn muốn làm gì?

VD như mình đang có 1 danh sách tên 10 người muốn sắp xếp tên theo 1 thứ tự gì đó . nên mình muốn quy ra số để sắp xếp đó bác :smile:

Dùng compare đấy? Compare trả về kiểu int và 0 là bằng nhau vậy nhỏ hơn 0 thì nhỏ hơn hơn 0 thì lớn hơn!

1 Like
String str = "Loi an cut";
for(char ch : str.toCharArray())
System.out.format("\\u%04x", (int) ch);

Cái này thì phải lập từ điển rồi tra vào đó nhé, thứ tự trong bảng mã Unicode không phải là thứ tự ký tự tiếng Việt trong từ điển đâu. Bạn chỉ có cách là lập từ điển các ký tự tiếng Việt rồi tra vào đó để “phán” là cái nào xếp trước, cái nào xếp sau.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?