2010-09-26 48 views
5

Tôi cần phải tìm ra tên cho các ký tự Unicode khi người dùng nhập số cho nó. Một ví dụ sẽ là nhập 0041 và nhận được "Latin Capital Letter A" cho kết quả.Tìm tên ký tự Unicode với Javascript

+0

Bạn sẽ phải xây dựng (hoặc thích hợp) một bảng tra cứu. Không có gì được tích hợp trong ngôn ngữ hoặc trình duyệt (hoặc bất kỳ thời gian chạy phía máy chủ nào mà tôi biết) sẽ thực hiện việc này cho bạn. – Pointy

+0

Các giải pháp khác có thể liên quan đến việc sử dụng các mô đun hoặc API web hiện có. – hippietrail

Trả lời

2

Theo như tôi biết, không có cách nào tiêu chuẩn để thực hiện việc này. Bạn có thể phân tích cú pháp tệp UnicodeData.txt để nhận thông tin này.

+3

@David Titarenco - mục đích của Index.txt là tạo ra ánh xạ tên-tới-codepoint (như thế này: http://www.unicode.org/charts/charindex.html). Bạn sẽ nhận thấy rằng có ba mục nhập cho U + 0041 và không có mục nào cho U + 0042. Các tệp khác nhau và mục đích của chúng được ghi lại ở đây: http://unicode.org/reports/tr44/ Tùy thuộc vào môi trường mã chạy, bạn có thể sử dụng định dạng XML, nhưng OP không nói nhiều về mã này ở đâu sẽ chạy. – McDowell

2

Đây phải là những gì bạn đang tìm kiếm. Mảng đầu tiên chỉ đơn giản là http://unicode.org/Public/UNIDATA/Index.txt với thay thế dòng mới bằng |;

// this mess.. 
var unc = "A WITH ACUTE, LATIN CAPITAL LETTER 00C1| /*... really big array ...*/ |zwsp 200B"; 
var uncs=unc.split("|"); 
var final_a = []; 
var final_s = ""; 
for each (var item in uncs) { 
    var _T=item.split("\t"); 
    //final_a [_T[1]] = _T[0]; 
    final_s += '"' + _T[1] + '"' + ' : ' + '"' + _T[0] + '",'; 
} 

console.log (final_s); 

// yields.. 

var unicode_lookup = { /*really big array*/ } 

// which we can use like so ... 

alert(unicode_lookup["1D01"]); 
// AE, LATIN LETTER SMALL CAPITAL 

SO không giữ các tab để phần đầu tiên có thể không hoạt động nếu bạn chỉ cần sao chép-dán. Bạn sẽ lưu ý rằng một số ký tự trùng lặp để bạn có thể muốn dọn dẹp.

+0

Tôi đã học được rằng câu trả lời này có thể không được phép trên Stack Overflow vì nó yêu cầu tài nguyên ngoài trang web. [Xem nhận xét trong câu hỏi trùng lặp.] (Https://stackoverflow.com/questions/44983646/how-can-i-get-the-official-unicode-name-of-a-character-in-javascript-from-either ? noredirect = 1 # comment76947882_44983646) – hippietrail

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