CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 65

65

Chương 2: Thao tác dữ liệu

output.Close();

}

}

}

Chạy

CharacterEncodingExample

sẽ tạo ra file output.txt. Mở file này trong một trình soạn

thảo có hỗ trợ Unicode, bạn sẽ thấy kết quả như sau:

Source Text : Area = Πr^2

UTF-16 Bytes: 41-00-72-00-65-00-61-00-20-00-3D-00-20-00-A0-03-72-00-5E-00-32-00

UTF-8 Bytes: 41-72-65-61-20-3D-20-CE-A0-72-5E-32

ASCII Bytes: 41-72-65-61-20-3D-20-3F-72-5E-32

UTF-8 Text : Area = Πr^2

ASCII Text : Area = ?r^2

Chú ý rằng, nếu sử dụng UTF-16 thì mỗi ký tự được mã hóa bởi 2 byte, nhưng vì hầu hết các
ký tự đều là ký tự chuẩn nên byte cao là 0 (nếu sử dụng little-endian thì byte thấp viết trước).
Do đó, hầu hết các ký tự đều được mã hóa bởi những số giống nhau trong ba kiểu mã hóa,
ngoại trừ ký hiệu PI được mã hóa khác (được in đậm trong kết quả ở trên). Để mã hóa PI cần
2 byte, đòi hỏi này được UTF-8 hỗ trợ nên thể hiện được Π, trong khi đó ASCII chỉ sử dụng
một byte nên thay PI bằng mã 3F, đây là mã của dấu hỏi (?).

Nếu chuyển các ký tự Unicode sang ASCII hoặc một kiểu mã hóa khác thì có thể
mất dữ liệu. Bất kỳ ký tự Unicode
nào có mã ký tự không biểu diễn được trong
kiểu mã hóa đích sẽ bị bỏ qua khi chuyển đổi.

Lớp

Encoding

cũng cung cấp phương thức tĩnh

Covert

để đơn giản hóa việc chuyển một mảng

byte từ kiểu mã hóa này sang kiểu mã hóa khác không phải qua trung gian UTF-16. Ví dụ,
dòng mã sau chuyển trực tiếp các byte trong mảng

asciiString

từ ASCII sang UTF-8:

byte[] utf8String = Encoding.Convert(Encoding.ASCII, Encoding.UTF8,

asciiString);

3.

3.

Chuy n các ki u giá tr c b n thành m ng ki u byte

ị ơ ả

Chuy n các ki u giá tr c b n thành m ng ki u byte

ị ơ ả

Bạn cần chuyển các kiểu giá trị cơ bản thành mảng kiểu byte.

Lớp

System.BitConverter

cung cấp các phương thức tĩnh rất tiện lợi cho việc

chuyển đổi qua lại giữa các mảng kiểu byte và hầu hết các kiểu giá trị cơ bản—
trừ kiểu

decimal

. Để chuyển một giá trị kiểu

decimal

sang mảng kiểu byte, bạn

cần sử dụng đối tượng

System.IO.BinaryWriter

để ghi giá trị đó vào một thể hiện

System.IO.MemoryStream

, sau đó gọi phương thức

Memorystream.ToArray

. Để có

một giá trị

decimal

từ một mảng kiểu byte, bạn cần tạo một đối tượng

MemoryStream

từ mảng kiểu byte, sau đó sử dụng thể hiện

System.IO.BinaryReader

để đọc giá trị này từ

MemoryStream

.

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.