2012-01-30 37 views
8

Trong công ty mà tôi làm việc, chúng tôi có lớp để chuyển đổi đến và từ Base64 chuỗi. Khi tôi lần đầu tiên nhìn thấy mã, tôi hỏi tại sao không sử dụng Convert.ToBase64String đi kèm với .NET?Base64 có được chuẩn hóa không?

Sau đó, tôi đã sửa đổi phần thân phương thức thành chỉ cần gọi Convert.ToBase64String, nhưng nó không tạo ra cùng một chuỗi.

Tôi đã thử sử dụng ASCII, UTF8, Unicode và UTF32.

Tôi không nhớ chính xác nhưng tôi nghĩ rằng ASCII tạo ra một chuỗi có cùng độ dài nhưng một số ký tự khác nhau và các mã khác Enconding tạo ra các chuỗi lớn hơn.

Có thể triển khai của chúng tôi là sai, nhưng tôi đã tìm thấy một triển khai JavaScript phù hợp với chúng tôi.

Base64 không phải là di động?

Edit: Tôi thấy điều này ở Wikipedia, nhưng tôi không biết nếu nó là nguyên nhân gây http://en.wikipedia.org/wiki/Base64#Implementations_and_history

Edit2: tôi đã đề cập mã hóa bởi vì chúng tôi đang chuyển đổi một chuỗi khác. Sau đó, tôi cần phải chuyển đổi chuỗi ban đầu của tôi thành mảng byte bằng cách sử dụng một số mã hóa

+0

Tôi nghĩ là vậy, vì vậy tôi đang quan tâm đến điều này. – Archer

+0

Có vẻ như, có vẻ như họ đang sử dụng triển khai tùy chỉnh vì một số lý do. http://tools.ietf.org/html/rfc4648 – Will

+4

Việc chuyển đổi chuỗi byte thành chuỗi Base64 không liên quan đến ASCII, UTF-8 hoặc Unicode. – dtb

Trả lời

10

RFC 3548. Không, chờ đã! Có phiên bản mới hơn: RFC 4648. (Cảm ơn dtb!)

BTW, bạn dường như đang trộn base64, biến bất kỳ luồng nhị phân nào thành dòng mã ASCII và mã hóa ký tự, đó là các khái niệm hoàn toàn khác nhau. Bạn có thể muốn đọc this introduction article về mã hóa.

+5

Bị lỗi thời bởi: 4648 – dtb

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