Câu hỏi

25/05/2013 20:36
Xin hỏi cách chuyển 1 ký tự Unicode 2 byte trong C# và VB.NET thành ký tự ASCII?
Danh sách câu trả lời (1)

Cần lưu ý, bảng mã Unicode là sự nới rộng của bảng mã ASCII, nghĩa là 128 ký tự đầu trong bảng mã Unicode hoàn toàn giống với 128 ký tự mà bảng mã ASCII cung cấp, do đó không cần chuyển mã các ký tự này từ Unicode sang ASCII. Các ký tự còn lại của bảng mã Unicode (>=128) không tương đương với ký tự nào trong bảng mã ASCII nên không thể chuyển các ký tự này về bảng mã ASCII được.
Lưu ý khác là để dễ dàng lập trình ứng dụng đa ngôn ngữ, môi trường .Net (VB .Net, VC#, VJ#...) hỗ trợ trực tiếp bộ mã Unicode, thí dụ:
• Kiểu string miêu tả chuỗi các ký tự Unicode, mỗi ký tự dài 2 byte.
• Kiểu char[] miêu tả 1 dãy các phần tử, mỗi phần tử miêu tả 1 ký tự Unicode dài 2 byte.
Tóm lại trong môi trường .Net, bạn có thể miêu tả chuỗi ký tự bất kỳ, chuỗi này có thể chỉ là chuỗi ASCII cổ điển hay chuỗi các ký tự tiếng Hoa, tiếng Nhật, tiếng Việt Unicode...
Trong trường hợp muốn chuyển chuỗi (dạng Unicode 2 byte) về dạng 1 byte truyền thống, bạn có thể dùng đoạn code VB .Net (hay C#) sau:
Imports System.Text
...
'chuyển chuỗi (Unicode) sang dạng dãy byte
Dim uniBytes As Byte() = Encoding.Unicode.GetBytes("chuoi van ban kiem tra")
'chuyển dãy bytes Unicode về dãy ASCII
Dim ascBytes As Byte() = Encoding.Convert(Encoding.Unicode, Encoding.ASCII, uniBytes)
'mỗi phần tử ascBytes là 1 ký tự ASCII
Lưu ý khác là để dễ dàng lập trình ứng dụng đa ngôn ngữ, môi trường .Net (VB .Net, VC#, VJ#...) hỗ trợ trực tiếp bộ mã Unicode, thí dụ:
• Kiểu string miêu tả chuỗi các ký tự Unicode, mỗi ký tự dài 2 byte.
• Kiểu char[] miêu tả 1 dãy các phần tử, mỗi phần tử miêu tả 1 ký tự Unicode dài 2 byte.
Tóm lại trong môi trường .Net, bạn có thể miêu tả chuỗi ký tự bất kỳ, chuỗi này có thể chỉ là chuỗi ASCII cổ điển hay chuỗi các ký tự tiếng Hoa, tiếng Nhật, tiếng Việt Unicode...
Trong trường hợp muốn chuyển chuỗi (dạng Unicode 2 byte) về dạng 1 byte truyền thống, bạn có thể dùng đoạn code VB .Net (hay C#) sau:
Imports System.Text
...
'chuyển chuỗi (Unicode) sang dạng dãy byte
Dim uniBytes As Byte() = Encoding.Unicode.GetBytes("chuoi van ban kiem tra")
'chuyển dãy bytes Unicode về dãy ASCII
Dim ascBytes As Byte() = Encoding.Convert(Encoding.Unicode, Encoding.ASCII, uniBytes)
'mỗi phần tử ascBytes là 1 ký tự ASCII
Trả lời câu hỏi
Câu hỏi lĩnh vực Lập trình
Rao vặt Siêu Vip