2017-09-21 17 views
8

HTML Character Entity 𝕒:Tương đương số giữa các đối tượng ký tự HTML và Delphi?

enter image description here

thể được tạo ra từ số 120.146 với mã HTML này:

<!DOCTYPE html> 
<html> 
<style> 
body { 
    font-size: 20px; 
} 
</style> 
<body> 

<p>I will display &#120146;</p> 

</body> 
</html> 

Một số các biểu tượng nhân vật mở rộng có thể được tạo ra từ các giá trị số giống hệt nhau cả trong HTML và trong Delphi 10.1.2. Ví dụ:

Cả &#174;Chr(174) tạo "thương hiệu đã đăng ký" biểu tượng nhân vật ®

Cả &#163;Chr(163) tạo "pound" nhân vật biểu tượng £

vv

Thật không may, đây là không phải là trường hợp với số trên trong đó Chr(120146) ở Delphi tạo ra một "biểu tượng hài hước của Trung Quốc".

Vậy làm cách nào tôi có thể tạo biểu tượng ký tự ở trên &aopf; từ số trong Delphi? Và đó là phạm vi số nơi tương đương số trên giữa HTML và Delphi không hoạt động hoặc không hoạt động?

Trả lời

11

Đây là 'MATHEMATICAL DOUBLE-STRUCK SMALL A' (U+1D552). Nó nằm ngoài Mặt phẳng đa ngôn ngữ cơ bản, và như vậy trong UFT-16 được mã hóa bằng cặp thay thế. Điều này có nghĩa là cần có hai thành phần ký tự UTF-16.

Nhìn vào nỗ lực của bạn: Chr(120146). Bây giờ, 120146 > high(Word) (= 65535) cho bạn biết rằng mã của bạn không thể thành công. Hãy nhớ rằng mỗi phần tử ký tự UTF-16 có kích thước 16 bit. Sẽ tốt hơn nếu trình biên dịch cảnh báo về điều này. Phải không?

Liên kết ở trên cho bạn biết cách mã hóa nó. Nó được đưa ra bởi cặp thay thế này:

0xD835 0xDD52

Trong Delphi đó sẽ được dễ dàng nhất bằng văn bản như:

#$D835#$DD52 

Nếu bạn đang bắt đầu với mã UTF-32 như một giá trị số sau đó bạn có thể chuyển đổi nó thành chuỗi Delphi bằng cách sử dụng TCharacter.ConvertFromUtf32 từ đơn vị System.Character:

TCharacter.ConvertFromUtf32($1D552) 

Rõ ràng đối số cho hàm này có thể là một biến.

Nếu phần lớn các thuật ngữ Unicode trên là không biết đến bạn, đọc những bài viết này:

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