« Home « Kết quả tìm kiếm

Dùng Unicode chữ Việt trong dot NET


Tóm tắt Xem thử

- Dùng Unicode chữ Việt trong .NET .
- Căn bản Unicode chữ Việt ISO 10646 và Unicode.
- Thay vì dùng 8 bits để biểu diễn chỉ 255 dấu hiệu, bây giờ người ta dùng đến 16 bits để có thể biểu diễn đến trên 65000 dấu hiệu..
- Hãy tưởng tượng một bài viết có thể chứa nhiều ngôn ngữ cùng một lúc.
- Nhưng cả hai tiêu chuẩn gần như y hệt nhau khi nói đến con số dùng để biểu diễn một chữ, con số nầy đuợc gọi là code point.
- Thí dụ như code point của chữ ả là 1EA3 , của chữ ơ là 01A1 .
- Ðể biểu diễn một code point, tùy theo cách encoding, có khi ta cần 1, 2, 3 hay 4 bytes .v.v., mỗi byte dùng cho code point người ta không gọi là byte hay octet, mà lại gọi là code unit.
- là con số hexadecimal của code point.
- UTF­16.
- UTF­16 là một cách encoding dùng 20bit Unicode.
- Các characters trong BMP được diễn tả bằng cách dùng giá trị 16bit của code point trong Unicode CCS.
- Trước hết, một code point có 20 bits được phân ra làm hai nhóm 10 bits.
- 16 có thể biểu diễn được những characters Unicode có 20bits.
- UTF­8 là một cách encoding để có tác dụng y như UCS­4 (cũng là UTF­16), chớ không phải có code point nào khác.
- Cách hoán chuyển UTF­16 qua UTF­8 và ngược lại đuợc làm theo bảng dưới đây.
- UTF-16 (Nh phân) ị UTF-8 (Nh phân) ị.
- Trong chữ Việt, chúng ta chỉ làm việc với một số tương đối ít Unicode code points ( tổng cộng 134 ký tự) và UTF­8, bạn có thể hoặc dùng một Look­up table dựa theo Bản đối chiếu, hoặc dùng hai Functions ToUTF8 và ToUTF16 với Listings như dưới đây để hoán chuyển từ encoding UTF­16 ra UTF­8, và ngược lại:.
- Thật ra hai Functions ToUTF8 và ToUTF16 được viết ra để làm sáng tỏ cách hoán chuyển giữa UTF­16 và UTF­8 mà thôi, vì trong .NET ta có thể tuyên bố .
- System.Text.Encoding để .NET tự động quản lý cách encoding cho chúng ta.
- Code point &HD0 là của chữ Latin Eth hoa ( chữ Latin Eth thường là ð.
- còn code point &H110 là của chữ Latin d hoa với stroke ( chữ Latin d thường với stroke là đ.
- Do đó ta phải dùng code point .
- Bạn có thể copy chữ Ð nầy ngay từ Browser để paste vào chỗ nào cần thiết.
- Vì Unicode nói chung hỗ trợ UTF­16BE, UTF­16LE và UTF­8, nên để có thể biết được Text file trong Microsoft Windows đang chứa Unicode encoding kiểu nào, ở đầu mỗi Unicode Text file có 2 hay 3 bytes gọi là Byte Order Mark như sau:.
- Khi viết Unicode ra Text file trong MSWindows, nếu dùng UTF­8 bạn chỉ cần viết ở đầu file Byte Order Mark EF BB BF.
- Character Encoding Scheme Các bytes vi t ra Text file ế.
- Text c a file ủ á à ả.
- Câu hỏi đặt ra là Text File với encoding UTF­16LE hay UTF­8 chiếm nhiều chỗ hơn.
- Làm việc với Unicode chữ Việt trong .NET.
- Edit Unicode chữ Việt trong Visual Studio.NET IDE.
- Visual Studio.NET IDE hỗ trợ chữ Việt Unicode trong coding và comments của VB.NET và C#.
- Để đánh chữ Việt, bạn có thể dùng VietKey, UniKey, VPSKey .v.v..
- Đọc, viết Unicode text file.
- Trong thí dụ dưới đây, ta đọc một Unicode (UTF­16 little endian) text file và copy nó vào một UTF­8 text file.
- Private Sub BtnConvert_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnConvert.Click.
- Instantiate a stream reader to read a Unicode (UTF16 little endian) text file.
- TextBox1.Text, System.Text.Encoding.Unicode).
- Instantiate a stream writer to write a UTF-8 text file.
- TextBox1.Text.Substring(0, TextBox1.Text.Length - 4) &.
- False, System.Text.Encoding.UTF8) Dim ALine As String.
- Thật ra, .NET thông minh đủ để nhận diện Encoding của input text file bằng cách đọc Byte Order Mark (BOM).
- Do đó, thay vì declare encoding Unicode cho input file ta có thể bảo nó auto­detect BOM bằng cách thay thế statement:.
- Lưu ý là mặc dầu .NET không giới hạn việc ta dùng Unicode, nhưng ta phải tuyên bố loại Encoding của output file rõ ràng, nếu không, kết quả có thể là ANSI text, tức là một số characters có dấu của chữ Việt sẽ bị hư (corrupted)..
- Stream có thể được áp dụng cho files như ở đây, nhưng nó cũng có thể được áp dụng cho Serialization, tức là gởi hay chứa data dưới dạng một chuỗi bytes.
- Cho các trường hợp Serialization/ Deserialization (Xấy khô/ Ngâm nước) ta cũng có thể dùng cách tuyên bố loại Encoding y như trên..
- Trong Sub BtnConvert_Click ở trên ta cũng có thể thay thế các hàng code:.
- Bạn có thể download source code của program UnicodeToUTF8 nầy..
- Để gởi một Unicode Text string qua mạng ta thường chuyển nó thành một byte buffer trước khi gởi đi.
- Đổi Unicode Text string thành một array­of­characters, (mMessage.ToCharArray) .
- Đổi Unicode array­of­characters thành một byte buffer, System.Text.Encoding.UTF8.GetBytes .
- Buffer = System.Text.Encoding.UTF8.GetBytes(mMessage.ToCharArray.
- Khi nhận byte buffer của một Unicode Text string, ta có thể dùng hàm .
- System.Text.Encoding.UTF8.GetString chuyển nó trở lại thành Unicode Text string như sau:.
- RecvMessage = System.Text.Encoding.UTF8.GetString(Buffer).
- Nếu ta không dùng encoding UTF8 thì .NET có thể lẳng lặng dùng encoding.ASCII by default và vô tình làm hư Unicode Text string..
- Chứa Unicode text string vào Clipboard và lấy nó ra.
- Chứa một text string vào Clipboard:.
- Copy text string strData to clipboard Clipboard.SetDataObject(strData).
- Lấy Unicode text string từ Clipboard gồm có hai bước: .
- Retrieve Text string in Unicode Text format from clipboard

Xem thử không khả dụng, vui lòng xem tại trang nguồn
hoặc xem Tóm tắt