63
Chương 2: Thao tác dữ liệu
Sử dụng lớp
System.Text.Encoding
và các lớp con của nó để chuyển đổi ký tự
giữa các kiểu mã hóa khác nhau.
Unicode không phải là kiểu mã hóa duy nhất, cũng như UTF-16 không phải cách duy nhất
biểu diễn ký tự Unicode. Khi ứng dụng cần trao đổi dữ liệu ký tự với các hệ thống bên ngoài
(đặc biệt là các hệ thống cũ), dữ liệu cần phải được chuyển đổi giữa UTF-16 và kiểu mã hóa
mà hệ thống đó hỗ trợ.
Lớp trừu tượng
Encoding
, và các lớp con của nó cung cấp các chức năng để chuyển ký tự qua
lại giữa nhiều kiểu mã hóa khác nhau. Mỗi thể hiện của lớp con hỗ trợ việc chuyển đổi giữa
UTF-16 và một kiểu mã hóa khác. Phương thức tĩnh
Encoding.GetEncoding
nhận vào tên hoặc
số hiệu trang mã (code page number) của một kiểu mã hóa và trả về thể hiện của lớp mã hóa
tương ứng.
Bảng 2.1 liệt kê một vài kiểu mã ký tự và số hiệu trang mã mà bạn phải truyền cho phương
thức
GetEncoding
để tạo ra thể hiện của lớp mã hóa tương ứng. Bảng này cũng cung cấp các
thuộc tính tĩnh của lớp
Encoding
đại diện cho phương thức
GetEncoding
tương ứng.
Bảng 2.1 Các lớp mã hóa ký tự
Kiểu mã hóa
Lớp
Sử dụng
ASCII
ASCIIEncoding
GetEncoding(20127)
hay thuộc tính
ASCII
Mặc định (kiểu mã hóa
hiện hành trên hệ thống)
Encoding
GetEncoding(0)
hay thuộc tính
Default
UTF-7
UTF7Encoding
GetEncoding(65000)
hay thuộc tính
UTF7
UTF-8
UTF8Encoding
GetEncoding(65001)
hay thuộc tính
UTF8
UTF-16 (Big Endian)
UnicodeEncoding
GetEncoding(1201)
hay thuộc tính
BigEndianUnicode
UTF-16 (Little Endian)
UnicodeEncoding
GetEncoding(1200)
hay thuộc tính
Unicode
Windows OS
Encoding
GetEncoding(1252)
Sau khi đã lấy được đối tượng lớp
Encoding
hỗ trợ kiểu mã hóa thích hợp, sử dụng phương
thức
GetBytes
để chuyển chuỗi nguồn (được mã hóa theo UTF-16) thành mảng kiểu byte chứa
các ký tự được mã hóa theo kiểu cần chuyển, và sử dụng
GetString
để chuyển mảng byte
thành chuỗi đích. Ví dụ dưới đây trình bày cách sử dụng một vài lớp mã hóa:
using System;
using System.IO;
using System.Text;
public class CharacterEncodingExample {