2010-09-22 41 views
38

Ai cũng có thể cho tôi biết phạm vi của các ký tự in được bằng Unicode? [ví dụ. Phạm vi ký tự có thể in Ascii là \ u0020 - \ u007f]Phạm vi của các ký tự có thể in Unicode là gì?

+1

\ u0000 - \ u0020 cũng không thể in được trong Unicode – Andrey

+3

Giống như \ u0020 - \ u007e –

+0

Bạn chắc chắn có rất nhiều điều ghét đối với câu hỏi này. Tôi thích ý tưởng. – jsejcksn

Trả lời

19

Xem, http://en.wikipedia.org/wiki/Unicode_control_characters

Bạn có thể muốn xem xét đặc biệt là ở nhân vật kiểm soát C0 và C1 http://en.wikipedia.org/wiki/C0_and_C1_control_codes

Các wiki nói, ký tự điều khiển C0 là trong phạm vi U + 0000-U + 001F và U + 007F (có cùng phạm vi với ASCII) và ký tự điều khiển C1 nằm trong phạm vi U + 0080 — U + 009F

khác với ký tự điều khiển C, Unicode cũng có hàng trăm ký tự điều khiển định dạng, ví dụ zero-width non-joiner, làm cho khoảng cách ký tự gần hơn, hoặc điều khiển văn bản hai chiều. Ký tự điều khiển định dạng này khá phân tán.

Quan trọng hơn, bạn đang làm gì yêu cầu bạn biết các ký tự không thể in của Unicode? Nhiều khả năng hơn là không, bất cứ điều gì bạn đang cố gắng làm là cách tiếp cận sai để giải quyết vấn đề của bạn.

+3

Tôi muốn tạo một trình tạo chuỗi unicode ngẫu nhiên sẽ tạo ra các ký tự có thể in. –

+5

Có thể in được cho ai? Bạn có muốn bao gồm ví dụ. tất cả các nhân vật Trung Quốc? Nhiều người dùng sẽ không có phông chữ cho họ, do đó, ‘in’ chúng sẽ cung cấp cho bạn không có gì, hộp trống hoặc một số nhân vật thay thế vô dụng khác. – bobince

+5

Một lý do chính đáng là tránh khai thác bảo mật: https://bugzilla.mozilla.org/show_bug.cgi?id=968576 –

-5

Unicode, cụm từ stict, không có dải ô. Con số có thể đi vô hạn.

Những gì bạn đã cung cấp không phải là UTF8 có 1 byte cho ký tự ASCII.

Đối với phạm vi, tôi tin rằng không có phạm vi các ký tự có thể in. Nó luôn luôn phát triển. Kiểm tra trang tôi đã nêu ở trên.

+7

Afaik Unicode chỉ được xác định cho đến 0x10ffff, ngoài ra không có điểm mã nào sẽ được gán – Sebastian

13

Trước tiên, bạn nên loại bỏ từ 'UTF8' trong câu hỏi của bạn, nó không thích hợp (UTF8 chỉ là một trong các mã hóa Unicode, đó là một cái gì đó trực giao với câu hỏi của bạn).

Thứ hai: ý nghĩa của "có thể in/không thể in" ít rõ ràng hơn trong Unicode. Có lẽ bạn có nghĩa là "graphical character"; và thậm chí có thể tranh chấp nếu một không gian có thể in/đồ họa. Các ký tự không phải đồ họa sẽ bao gồm, về cơ bản, các ký tự điều khiển: phạm vi 0x00-0x0f cộng với một số ký tự khác nằm rải rác.

Dù sao, phần lớn các ký tự Unicode (hơn 200.000) là "đồ họa". Nhưng điều này chắc chắn không ngụ ý rằng chúng có thể in được trong môi trường của bạn.

Dường như với tôi là một ý tưởng tồi, nếu bạn có ý định tạo chuỗi unicode "có thể in ngẫu nhiên", để cố gắng bao gồm tất cả các ký tự "có thể in".

3

Điều bạn nên làm là chọn phông chữ và sau đó tạo danh sách các ký tự Unicode có glyph được xác định cho phông chữ của bạn. Bạn có thể sử dụng một thư viện phông chữ như freetype để kiểm tra glyphs (kiểm tra cho FT_Get_Char_Index (...)! = 0).

Các vấn đề liên quan