2011-01-09 38 views
7

Tôi đang sử dụng XVI32 (Hex Editor) để lấy biểu diễn hex của ký hiệu Euro và nó cho tôi giá trị là 80.
Một trang khác: http://www.string-functions.com/string-hex.aspx.
Tôi không thể hiểu tại sao biểu diễn hex là 80 thay vì 0x20AC. 0X80 này cung cấp 128 chữ số thập phân và nếu tôi sử dụng Alt + 0128, nó thực sự tạo ra ký hiệu Euro.Biểu diễn Hex của Euro Symbol €

Ai đó có thể ném một số ánh sáng vào những gì có thể là logic đằng sau chuyển đổi này từ chuỗi sang chuyển đổi hex?

Cảm ơn

Trả lời

2

128 in decimal là 80 in Hexadecimal.

chỉnh sửa: và 0x20AC sẽ là 8364 theo thập phân.


Theo this trang, 128 là sai cho UTF-8 (hoặc bất kỳ unicode khác), nhưng phù hợp với cửa sổ-1252 (và iso-8859-15 cũng có nó, mặc dù ở nơi khác).

Thông thường, nếu bạn sử dụng, trên Windows, phím bàn phím có ký hiệu euro, octet nguyên 128 là thứ bạn thực sự tạo và chèn vào tệp .... tài liệu đi kèm với thông tin chỉ định mã hóa nơi dữ liệu ánh xạ tới ký tự được đề cập. Điều này có nghĩa là, mã hóa windows-1252 hoặc iso-8859-15, tương ứng, sẽ được chỉ định trong tiêu đề HTTP.

+1

ISO-8859-15 không có '€', nhưng ít 0xA4, không 0x80. – dan04

+0

@ dan04 - cảm ơn bạn đã sửa. – Oded

7

Mã hóa ký tự (hoặc bộ ký tự) ánh xạ các ký tự thành chuỗi giá trị byte. Bộ ký tự của bạn là windows-1252, mã hóa biểu tượng đồng euro là một byte hex đơn 0x80 (có 128 chữ số thập phân, như Oded đã nói). Mỗi bộ ký tự mã hóa các ký tự không phải ASCII khác nhau; không có gì về cơ bản là "đúng" hoặc "sai" về 0x80 đó.

+0

Nó có thể không phải là "sai", nhưng nó sẽ là một heck của rất nhiều * dễ dàng hơn * nếu chúng ta không phải đối phó với các mã hóa ký tự kế thừa. – dan04

+0

Trong một số cách có, theo một số cách không. Nó dễ dàng hơn để có các ký tự có chiều rộng không đổi, cung cấp các bộ ký tự "kế thừa" như windows-1252 một chân lên trên những linh hoạt hơn, "hiện đại" như UTF-8. Và ngay cả trong các bộ mã chuẩn tiêu chuẩn mã hóa trực tiếp các điểm mã Unicode (UTF-8, UTF-16BE, UTF-16LE, UCS-4, v.v.), mỗi bộ kết quả theo một chuỗi byte khác nhau cho mỗi ký tự ... http://en.wikipedia.org/wiki/Comparison_of_Unicode_encodings – dkarp

+0

Bạn chỉ cần cứu tôi !! Cảm ơn bạn ! – Superdrac

0

Tôi đoán rằng trong máy của bạn (và trên trang web đó), trang mã cục bộ giống như mã 128 ánh xạ tới ký hiệu Euro. Trên máy của tôi Alt + 0128 ánh xạ tới ký tự Do Thái Alef, vì nó được đặt thành một trang mã khác.

Bạn có thể xem mã Unicode cho Euro bằng cách gõ

javascript:alert("€".charCodeAt(0)) 

trong thanh địa chỉ của trình duyệt.

1

Lý do bạn thấy kết quả khác nhau là mã hóa ký tự:

Số 0x20AC là điểm mã unicode cho ký hiệu đồng euro. Tùy thuộc vào mã hóa được sử dụng, bạn nhận được nhiều mã khác nhau. Dưới Windows, bạn thường có một cái gì đó giống như cp1252 hoặc như vậy cho Đức ví dụ, đó là khá tương tự như mã hóa ISO8859-1 và một trong đó có chứa các ký hiệu euro tại 0x80.

Vì vậy, mã hex nào bạn nhận được cho biểu tượng đồng euro phụ thuộc vào mã hóa được sử dụng trong dữ liệu bạn xem. Bạn có thể xem unicode.org các tệp mã hóa được cung cấp để xem một số mã hóa khác nhau có sẵn, xem bản đồ có sẵn tại đây: http://unicode.org/Public/MAPPINGS/

0

0x20AC phải là đúng từ biểu tượng đồng euro (mở rộng) ký tự unicode.
Thực tế là việc nhấn Alt + 0128 tạo biểu tượng đồng euro không liên quan gì đến điều này (bạn có thể làm điều đó trong cửa sổ? Đó là cửa sổ cụ thể) 0x80 hoặc 128 không phải là mã html hợp lệ (Hành vi không xác định) : http://www.ascii.cl/htmlcodes.htm
đọc nhiều: http://www.cs.tut.fi/~jkorpela/html/euro.html

2

Unicode đến rất muộn trong hình để mã hóa ký tự (khoảng 1992-1993). Trước đó OEM sử dụng mã hóa cụ thể của họ. Trên môi trường Windows, bạn có nhiều mã hóa, cụ thể cho một ngôn ngữ. Do đó, theo mã hóa Windows của Windows: Western, bạn nhận được 0x80 cho đồng euro. Tuy nhiên Unicode bao gồm tất cả các ký hiệu tiền tệ trong các khối ký hiệu tiền tệ của BMP (U + 20A0 đến U + 20CF). Vì vậy, theo Unicode, bạn có U + 20AC cho ký hiệu tiền tệ euro và theo mã hóa Windows, bạn có 0x80 cho cùng một giá trị.

Để thấy sự khác biệt, trên cửa sổ máy mở charmap.exe và kiểm tra chế độ xem nâng cao. Từ các bộ ký tự chọn Windows: Western. Ở đó bạn sẽ thấy lý do.

Mọi chi tiết, thấy https://en.wikipedia.org/wiki/Windows-1252

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