2008-10-01 42 views
6

Phương pháp mã hóa URL thông thường là ký tự unicode là chia thành 2% mã HH. (\ u4161 =>% 41% 61)Giải mã URL Unicode

Nhưng, làm thế nào là unicode phân biệt khi giải mã? Làm cách nào để bạn biết rằng % 41% 61\ u4161 so với \ x41 \ x61 ("Aa")?

Các ký tự 8 bit có yêu cầu mã hóa, trước bởi % 00?

Hoặc, là điểm mà các ký tự unicode được cho là bị mất/chia nhỏ?

Trả lời

7

Theo Wikipedia:

hiện tại tiêu chuẩn

Các generic nhiệm vụ cú pháp URI rằng chương trình URI mới cung cấp cho các đại diện của dữ liệu nhân vật trong một URI phải, trong có hiệu lực, đại diện cho nhân vật từ bộ không được đặt trước mà không cần dịch, và phải chuyển đổi tất cả các ký tự khác thành byte theo UTF-8 và sau đó mã hóa phần trăm các ký tự đó giá trị. Yêu cầu này là được giới thiệu vào tháng 1 năm 2005 với ấn bản của RFC 3986. Đề án URI được giới thiệu trước ngày này không bị ảnh hưởng .

Không được giải quyết bởi thông số hiện tại là phải làm gì với dữ liệu ký tự được mã hóa . Ví dụ: trong máy tính, biểu hiện dữ liệu ký tự ở dạng mã hóa, ở một số cấp và do đó có thể được coi là dữ liệu nhị phân hoặc dưới dạng ký tự khi được ánh xạ tới các ký tự URI. Có lẽ, tùy thuộc vào sơ đồ URI thông số kỹ thuật để tính đến khả năng này và yêu cầu một hoặc khác, nhưng trên thực tế, rất ít, nếu có, thực sự thực hiện.

triển khai phi tiêu chuẩn

Có tồn tại một mã hóa phi tiêu chuẩn cho các ký tự Unicode:% uXXXX, nơi xxxx là một giá trị Unicode biểu diễn dưới dạng bốn chữ số thập lục phân. Hành vi này không được chỉ định bởi bất kỳ RFC nào và có bị W3C từ chối. Phiên bản thứ hai của ECMA-262 vẫn bao gồm chức năng thoát (chuỗi) sử dụng cú pháp này, nhưng cũng có chức năng mã hóa UTF-8 và phần trăm mã hóa mỗi octet.

Vì vậy, có vẻ như nó hoàn toàn tùy thuộc vào người viết phương thức unencode ... Không phải là tiêu chuẩn thú vị phải không?

0

Trước tiên, UTF-8 mã hóa chuỗi Unicode để tạo chuỗi ký tự 8 bit trước khi thoát bất kỳ số nào trong số các số đó bằng% HH.

P.S. - Tôi chỉ có thể hy vọng việc triển khai không chuẩn (% uxxxx) rất ít và xa.

0

Kể từ khi URI được giới thiệu trước khi unicode là xung quanh, hoặc ít nhất trong sử dụng rộng rãi, tôi tưởng tượng đây là một câu hỏi rất cụ thể thực hiện. UTF-8 mã hóa văn bản của bạn, sau đó thoát ra cho mỗi âm thanh bình thường như ý tưởng tốt nhất, vì nó hoàn toàn tương thích ngược với bất kỳ hệ thống ASCII/ANSI nào, mặc dù bạn có thể nhận được ký tự lạ hoặc hai.

Ở đầu bên kia, để giải mã, bạn sẽ không nhìn thấy văn bản của mình và nhận chuỗi UTF-8. Nếu ai đó sử dụng hệ thống cũ cố gắng gửi cho bạn một số dữ liệu trong ASCII/ANSI, thì không có hại gì xảy ra, đó là (gần như) UTF-8 được mã hóa rồi.

+0

Đây chính xác là những gì nên được sử dụng. Các nhân vật mà bạn đề cập có vẻ lạ, nhưng không ai trong số họ sẽ là nhân vật điều khiển (đó là cách UTF-8 hoạt động) và điều này thực sự tốt. –

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