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
Đăng trả lời
Hình đại diện của thành viên
phantronghiep07
Thành viên chính thức
Thành viên chính thức
Bài viết: 30
Ngày tham gia: Thứ 5 29/04/2010 2:34 pm
Been thanked: 4 times

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

Gửi bài by phantronghiep07 »

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


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, Vni
  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
Sửa lần cuối bởi 2 vào ngày phantronghiep07 với 0 lần sửa trong tổng số.
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: Thứ 2 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ài by pctester2020 »

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 thành viên
phantronghiep07
Thành viên chính thức
Thành viên chính thức
Bài viết: 30
Ngày tham gia: Thứ 5 29/04/2010 2:34 pm
Been thanked: 4 times

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

Gửi bài by phantronghiep07 »

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: Thứ 5 20/10/2011 2:37 pm

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

Gửi bài by uppicsthao »

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: Thứ 4 12/09/2012 2:16 pm

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

Gửi bài by txthang »

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?
Đăng trả lời

Quay về