01/10/2018, 12:15

Kiểm tra 1 kí tự có phải 1 biểu tượng không

Mọi người ơi có cách nào để kiểm tra 1 kí tự bất kì từ 1 bảng mã bất kì có phải là 1 symbol hay ko ạ?
Mình sử dụng qt có method issymbol() của QChar nhưng những kí tự dài đến 3 Byte phải sử dụng QByteArray để chứa thì ko biết xử lý ra sao.

明玉 viết 14:24 ngày 01/10/2018

bạn phải chuyển kí tự của bạn về encoding như Unicode ấy, lúc đó bạn sẽ có các QChar tương ứng 1 kí tự để test thoải mái. Dữ liệu gốc nó lưu multibyte encoding thì làm sao mà test được.
Chuẩn QChar to nhất là UTF-16.

Nguyễn Quang Khải viết 14:26 ngày 01/10/2018

Bạn có thể nói rõ hơn được ko ạ?

明玉 viết 14:19 ngày 01/10/2018

Đầu tiên bạn nói rõ input của bạn nó như thế nào đã.

Nguyễn Quang Khải viết 14:23 ngày 01/10/2018

cái input của mình mình lấy từ 1 symbol ở word ra, đến lúc paste vào QT thì nó hiện lên 1 kí tự khác, nó chính là hình mặt cười ở mục insert symbol trong word. Mình ko biết xử lý ra sao nữa bạn.

明玉 viết 14:26 ngày 01/10/2018

cái input của mình mình lấy từ 1 symbol ở word ra, đến lúc paste vào QT thì nó hiện lên 1 kí tự khác, nó chính là hình mặt cười ở mục insert symbol trong word. Mình ko biết xử lý ra sao nữa bạn.

Đưa code nào bạn ơi.

Nguyễn Quang Khải viết 14:18 ngày 01/10/2018

giống như việc mình paste vào đây thì nó hiện lên là  vậy

Nguyễn Quang Khải viết 14:22 ngày 01/10/2018

Nó giống như việc bị lỗi font chữ ấy bạn, mình copy 1 symbol vào QT và nó hiện lên 1 kí tự khác, chạy lệnh kiểm tra issymbol thì nó ko trả về true.

明玉 viết 14:22 ngày 01/10/2018

Không biết bạn copy kiểu gì chứ, mà có khi QtEditor không hiện unicode được (đúng ra luôn luôn được):

auto qchar = QChar(L'☹');
bool isSymbol = qchar.issymbol();

Với lại phải là kí tự được Hiệp hội Unicode đặt vào Category Symbol thì method này mới trả true nhé.

Nguyễn Quang Khải viết 14:17 ngày 01/10/2018

B cho mình xin mail mình gửi qua 1 vài biểu tượng và check dùm mình xem có ok ko nhé!

明玉 viết 14:16 ngày 01/10/2018

Mình không có sẵn Qt đâu, bạn phải tự check thôi. Lên google gõ “Symbol Character”, tha hồ cho bạn lựa chọn.

Nguyễn Quang Khải viết 14:23 ngày 01/10/2018

kí tự mặt cười kia QT của mình vẫn hiện, nhưng vài kí tự khác của mình lấy ra thả vào nó lại ko hiện lên đúng như vậy được

明玉 viết 14:22 ngày 01/10/2018

Bạn copy mấy kí tự đó lên đây được không?

Nguyễn Quang Khải viết 14:25 ngày 01/10/2018

không paste được, @@ nó đây này,

Hung viết 14:23 ngày 01/10/2018

Em không biết nói gì luôn, đó là kí tự của font Wingdings, symbol gì ở đây
Phần dưới hình có character code: 40

Còn emoji thì lên mạng tìm rồi copy paste vào.

Nguyễn Quang Khải viết 14:17 ngày 01/10/2018

paste nó ra “” này, ở trong qt thì nó ra 1 kí tự linh tinh khác

Nguyễn Quang Khải viết 14:16 ngày 01/10/2018

Ặc, nó ko phải symbol à @@

明玉 viết 14:21 ngày 01/10/2018

Lên đây lấy về này http://www.copypastecharacter.com/symbols
Font Wingding thì nó không theo chuẩn Unicode, cũng như awesome font không theo chuẩn unicode. Trong những font đấy, chữ a cũng có thể có hình dáng hoàn toàn khác để phục vụ hiển thị và in ấn.

Nguyễn Quang Khải viết 14:27 ngày 01/10/2018

Ra là vậy, hi, cảm ơn b nhiều nhé

Nguyễn Quang Khải viết 14:16 ngày 01/10/2018

Bạn ơi cho mình hỏi, giờ mình sử dụng QByteArray để nhập vào 1 chữ cái tượng hình ( nhật hoặc hàn quốc, trung quốc…) thì có cách nào để tìm ra chữ cái tiếp theo của nó ko nhỉ?

rogp10 viết 14:25 ngày 01/10/2018

Mấy tiếng đó làm j có “chữ cái (?!) tiếp theo” chỉ có code point tiếp theo thôi.

Bài liên quan
0