• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Chuyển đổi qua lại giữa UNICODE và VNI

Các thủ thuật liên quan đến xử lý chuỗi và thời gian
Hình đại diện của người dùng
phantronghiep07
Thành viên chính thức
Thành viên chính thức
Bài viết: 29
Ngày tham gia: T.Năm 29/04/2010 2:34 pm
Been thanked: 4 time

Chuyển đổi qua lại giữa UNICODE và VNI

Gửi bàigửi bởi phantronghiep07 » T.Năm 05/08/2010 6:47 pm

Thủ thuật: Chuyển đổi qua lại giữa UNICODE và VNI
Tác giả: phantronghiep07
Mô tả: Mình giới thiệu với các bạn 2 hàm chuyển đổi qua lại giữa 2 font chữ tiếng Việt thông dụng là Unicode và Vni.


Hàm rất đơn giản, các bạn xem là hiều ngay. Chú ý là cửa sổ viết code các bạn cần dùng font chữ Vni.
Khi sử dụng các hàm của mình trong các ứng dụng, các bạn cần ghi rõ tác giả.

1. Hàm chuyển từ font Unicode sang Vni

  1. Public Function Uni2Vni(nhapUni As String) As String
  2. '---------------------------------------------------------------------------------------
  3. ' Function : Uni2Vni
  4. ' Author    : phantronghiep07
  5. ' Phone     : 0915 080 282
  6. '---------------------------------------------------------------------------------------
  7.    Dim maAcii, Vni, loi, suaLoi
  8.     Dim i As Integer
  9.    
  10.      maAcii = Array(7845, 7847, 7849, 7851, 7853, 226, 225, 224, 7843, 227, 7841, 7855, 7857, 7859, _
  11.                                 7861, 7863, 259, 250, 249, 7911, 361, 7909, 7913, 7915, 7917, 7919, 7921, 432, _
  12.                                 7871, 7873, 7875, 7877, 7879, 234, 233, 232, 7867, 7869, 7865, 7889, 7891, 7893, _
  13.                                 7895, 7897, 244, 243, 242, 7887, 245, 7885, 7899, 7901, 7903, 7905, 7907, 417, _
  14.                                 237, 236, 7881, 297, 7883, 253, 7923, 7927, 7929, 7925, 273, 7844, 7846, 7848, _
  15.                                 7850, 7852, 194, 193, 192, 7842, 195, 7840, 7854, 7856, 7858, 7860, 7862, 258, _
  16.                                 218, 217, 7910, 360, 7908, 7912, 7914, 7916, 7918, 7920, 431, 7870, 7872, 7874, _
  17.                                 7876, 7878, 202, 201, 200, 7866, 7868, 7864, 7888, 7890, 7892, 7894, 7896, 212, _
  18.                                 211, 210, 7886, 213, 7884, 7898, 7900, 7902, 7904, 7906, 416, 205, 204, 7880, 296, _
  19.                                 7882, 221, 7922, 7926, 7928, 7924, 272)
  20.                                
  21.      Vni = Array("aá", "aà", "aå", "aã", "aä", "aâ", "aù", "aø", "aû", "aõ", "aï", "aé", "aè", _
  22.                             "aú", "aü", "aë", "aê", "uù", "uø", "uû", "uõ", "uï", "öù", "öø", "öû", "öõ", _
  23.                             "öï", "ö", "eá", "eà", "eå", "eã", "eä", "eâ", "eù", "eø", "eû", "eõ", "eï", _
  24.                             "oá", "oà", "oå", "oã", "oä", "oâ", "où", "oø", "oû", "oõ", "oï", "ôù", "ôø", _
  25.                             "ôû", "ôõ", "ôï", "ô", "í", "ì", "æ", "ó", "ò", "yù", "yø", "yû", "yõ", "î", _
  26.                             "ñ", "AÁ", "AÀ", "AÅ", "AÃ", "AÄ", "AÂ", "AÙ", "AØ", "AÛ", "AÕ", _
  27.                             "AÏ", "AÉ", "AÈ", "AÚ", "AÜ", "AË", "AÊ", "UÙ", "UØ", "UÛ", "UÕ", _
  28.                             "UÏ", "ÖÙ", "ÖØ", "ÖÛ", "ÖÕ", "ÖÏ", "Ö", "EÁ", "EÀ", "EÅ", _
  29.                             "EÃ", "EÄ", "EÂ", "EÙ", "EØ", "EÛ", "EÕ", "EÏ", "OÁ", "OÀ", "OÅ", _
  30.                             "OÃ", "OÄ", "OÂ", "OÙ", "OØ", "OÛ", "OÕ", "OÏ", "ÔÙ", "ÔØ", "ÔÛ", _
  31.                             "ÔÕ", "ÔÏ", "Ô", "Í", "Ì", "Æ", "Ó", "Ò", "YÙ", "YØ", "YÛ", "YÕ", _
  32.                             "Î", "Ñ") ' Cua so viet code phai chon font chu Vni thi hien thi moi dung
  33.                            
  34.         loi = Array("aauø", "aaø", "aaoõ", "auø", "aoõ", "aeù", "aeø", "auuø", "aeâ", "uuø", "uoõ", _
  35.                             "öoõ", "eoõ", "AAUØ", "AAØ", "AAOÕ", "AUØ", "AOÕ", "AEÙ", "AEØ", "AUUØ", _
  36.                             "AEÂ", "UUØ", "UOÕ", "ÖOÕ", "EOÕ") ' Cua so viet code phai chon font chu Vni thi hien thi moi dung
  37.                            
  38.         suaLoi = Array("aá", "aà", "aã", "aù", "aõ", "aé", "aè", "aú", "aê", "uù", "uõ", "öõ", "eõ", "AÁ", _
  39.                                 "AÀ", "AÃ", "AÙ", "AÕ", "AÉ", "AÈ", "AÚ", "AÊ", "UÙ", "UÕ", "ÖÕ", "EÕ") ' Cua so viet code phai chon font chu Vni thi hien thi moi dung
  40.        
  41.         Uni2Vni = nhapUni
  42.         For i = 0 To 133
  43.             Uni2Vni = Replace(Uni2Vni, ChrW(maAcii(i)), Vni(i))
  44.         Next i
  45.        
  46.         For i = 0 To 25
  47.             Uni2Vni = Replace(Uni2Vni, loi(i), suaLoi(i))
  48.         Next i
  49.        
  50. End Function
  51.  


2. Hàm chuyển từ font Vni sang Unicode:
  1. Public Function Vni2Uni(nhapVni As String) As String    ' Vni --> Unicode
  2. '---------------------------------------------------------------------------------------
  3. ' Function : Vni2Uni
  4. ' Author    : phantronghiep07
  5. ' Phone     : 0915 080 282
  6. '---------------------------------------------------------------------------------------
  7.    Dim maAcii, Uni
  8.     Dim i As Integer
  9.    
  10.      maAcii = Array(7845, 7847, 7849, 7851, 7853, 226, 7843, 227, 7841, 7855, 7857, 7859, _
  11.                                 7861, 7863, 259, 250, 249, 7911, 361, 7909, 7913, 7915, 7917, 7919, 7921, 432, _
  12.                                 7871, 7873, 7875, 7877, 7879, 234, 233, 232, 7867, 7869, 7865, 7889, 7891, 7893, _
  13.                                 7895, 7897, 7887, 245, 7885, 7899, 7901, 7903, 7905, 7907, 417, _
  14.                                 237, 236, 7881, 297, 7883, 253, 7923, 7927, 7929, 7925, 273, 7844, 7846, 7848, _
  15.                                 7850, 7852, 194, 7842, 195, 7840, 7854, 7856, 7858, 7860, 7862, 258, _
  16.                                 218, 217, 7910, 360, 7908, 7912, 7914, 7916, 7918, 7920, 431, 7870, 7872, 7874, _
  17.                                 7876, 7878, 202, 201, 200, 7866, 7868, 7864, 7888, 7890, 7892, 7894, 7896, _
  18.                                 7886, 213, 7884, 7898, 7900, 7902, 7904, 7906, 416, 205, 204, 7880, 296, _
  19.                                 7882, 221, 7922, 7926, 7928, 7924, 272, 225, 224, 244, 243, 242, 193, 192, 212, 211, 210)
  20.                                
  21.      Vni = Array("aá", "aà", "aå", "aã", "aä", "aâ", "aû", "aõ", "aï", "aé", "aè", _
  22.                             "aú", "aü", "aë", "aê", "uù", "uø", "uû", "uõ", "uï", "öù", "öø", "öû", "öõ", _
  23.                             "öï", "ö", "eá", "eà", "eå", "eã", "eä", "eâ", "eù", "eø", "eû", "eõ", "eï", _
  24.                             "oá", "oà", "oå", "oã", "oä", "oû", "oõ", "oï", "ôù", "ôø", _
  25.                             "ôû", "ôõ", "ôï", "ô", "í", "ì", "æ", "ó", "ò", "yù", "yø", "yû", "yõ", "î", _
  26.                             "ñ", "AÁ", "AÀ", "AÅ", "AÃ", "AÄ", "AÂ", "AÛ", "AÕ", _
  27.                             "AÏ", "AÉ", "AÈ", "AÚ", "AÜ", "AË", "AÊ", "UÙ", "UØ", "UÛ", "UÕ", _
  28.                             "UÏ", "ÖÙ", "ÖØ", "ÖÛ", "ÖÕ", "ÖÏ", "Ö", "EÁ", "EÀ", "EÅ", _
  29.                             "EÃ", "EÄ", "EÂ", "EÙ", "EØ", "EÛ", "EÕ", "EÏ", "OÁ", "OÀ", "OÅ", _
  30.                             "OÃ", "OÄ", "OÛ", "OÕ", "OÏ", "ÔÙ", "ÔØ", "ÔÛ", _
  31.                             "ÔÕ", "ÔÏ", "Ô", "Í", "Ì", "Æ", "Ó", "Ò", "YÙ", "YØ", "YÛ", "YÕ", _
  32.                             "Î", "Ñ", "aù", "aø", "oâ", "où", "oø", "AÙ", "AØ", "OÂ", "OÙ", "OØ")
  33.                            
  34.         Vni2Uni = nhapVni
  35.         For i = 0 To 133
  36.             Vni2Uni = Replace(Vni2Uni, Vni(i), ChrW(maAcii(i)))
  37.        '     MsgBox Vni2Uni & i
  38.        Next i
  39.                            
  40. End Function
  41.  
Sửa lần cuối bởi phantronghiep07 vào ngày T.Tư 25/08/2010 8:41 pm với 1 lần sửa.


Chí nhỏ vui với việc nhỏ !
Giấc mơ con ru ngủ cuộc đời con !

pctester2020
Thành viên chính thức
Thành viên chính thức
Bài viết: 26
Ngày tham gia: T.Hai 22/12/2008 11:33 am
Been thanked: 1 time

Re: Chuyển đổi qua lại giữa UNICODE và VNI

Gửi bàigửi bởi pctester2020 » T.Hai 23/08/2010 8:57 am

Mình gõ vào Đoàn: uni -> vni, ok nhưng chuyển ngược lại vni-uni là Đồn. Đề nghị Fix

Hình đại diện của người dùng
phantronghiep07
Thành viên chính thức
Thành viên chính thức
Bài viết: 29
Ngày tham gia: T.Năm 29/04/2010 2:34 pm
Been thanked: 4 time

Re: Chuyển đổi qua lại giữa UNICODE và VNI

Gửi bàigửi bởi phantronghiep07 » T.Tư 25/08/2010 8:42 pm

Mình đã fix rồi đó.
Chí nhỏ vui với việc nhỏ !
Giấc mơ con ru ngủ cuộc đời con !

uppicsthao
Bài viết: 2
Ngày tham gia: T.Năm 20/10/2011 2:37 pm

Re: Chuyển đổi qua lại giữa UNICODE và VNI

Gửi bàigửi bởi uppicsthao » T.Năm 20/10/2011 3:01 pm

Chào bạn, mình có nhu cầu chuyển từ database access sang foxpro nhưng khi chuyển dùng hàm của bạn thì bên fox đọc toàn mã không ra chính font được. Bạn có cách nào góp ý dùm nhé, cám ơn nhiều.

txthang
Bài viết: 1
Ngày tham gia: T.Tư 12/09/2012 2:16 pm

Re: Chuyển đổi qua lại giữa UNICODE và VNI

Gửi bàigửi bởi txthang » T.Tư 12/09/2012 2:20 pm

Vậy nếu mình muốn chuyển font unicode tổ hợp thành font unidoce dựng sẵn thì làm thế nào vậy bro?


Quay về “[VB] Chuỗi và Thời gian”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách