2010-01-11 4 views
5

hi im người mới bắt đầu trong lập trình và phát triển mạng. tôi có một câu hỏi liên quan đến mã hóa ASCII và Unicode.C# ASCII hoặc Unicode

trong MSDN và các ví dụ web khác thực hiện như sau:

byte[] byteData = Encoding.ASCII.GetBytes(data); 

là này vì những mẫu mã là cũ? không nên là:

byte[] byteData = Encoding.Unicode.GetBytes(data); 

cảm ơn thông tin bạn đã nhập!

Trả lời

10

Phụ thuộc - bạn có muốn kết quả ở dạng ASCII hoặc UTF-16 không? Mỗi cái đều sai khi bạn muốn cái kia.

Nếu bạn đang nói một số giao thức mạng, bạn phải tìm hiểu mã hóa ký tự nào được mong đợi bởi giao thức. Sử dụng mã hóa sai và những điều xấu sẽ xảy ra.

Tất nhiên ASCII có những hạn chế lớn - nó rất dựa trên tiếng Anh (chỉ có các ký tự Latinh, không có dấu) nhưng nó đúng cho một số giao thức. Những người khác có thể sử dụng UTF-16 (Encoding.Unicode), UTF-8 hoặc các mã hóa khác ... hoặc chúng sẽ cho phép bạn chỉ định mã hóa chính mình trong giao thức.

+0

thực hiện cả hai phía của máy khách/máy chủ, vì vậy tôi quyết định. im xem Unicode là lựa chọn vì nó có khả năng chứa các ngôn ngữ khác nhau. Tôi có thể sai! – iTEgg

+7

@ikurtz: Tôi khuyên bạn nên sử dụng UTF-8 thay vì Unicode cho hầu hết mọi thứ, vì nó * thường * giảm lưu lượng truy cập. Có những ngoại lệ cho điều đó (các ký tự Viễn Đông thường trở nên lớn hơn trong UTF-8) và có những nhược điểm khác (bạn không thể tính toán kích thước của dữ liệu nhị phân trực tiếp từ số điểm mã) nhưng thường là một ý tưởng hay IMO . –

+0

điểm rất tốt liên quan đến việc nhận được kích thước tin nhắn! tôi hiểu tại sao họ sử dụng ASCII. – iTEgg