• 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 giữa Unicode (1252) và UTF-8

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
ledoninh
VIP
VIP
Bài viết: 38
Ngày tham gia: T.Sáu 26/08/2005 3:52 pm
Đến từ: HCMC
Has thanked: 1 time
Liên hệ:

Chuyển đổi giữa Unicode (1252) và UTF-8

Gửi bàigửi bởi ledoninh » T.Sáu 28/03/2008 4:16 pm

Thủ thuật: Chuyển đổi giữa Unicode (1252) và UTF-8
Tác giả: ledoninh
Mô tả: Chuyển đổi giữa Unicode (1252) và UTF-8


Bữa trước, mình đọc được 1 câu hỏi về vấn đề này, nhưng không được phép trả lời (diễn đàn tạm chuyển chỗ). Bây giờ gửi lên đây 1 hàm mà mình lập ra cho ASP của mình (VBScript, cái chính là replace chữ nào thành chữ nào thôi).

Mã: Chọn hết

  1. Dim a(133),b(133), i
  2.     a(0)="Á"
  3.     a(1)="á"
  4.     a(2)="À"
  5.     a(3)="Ã "
  6.     a(4)="Ả"
  7.     a(5)="ả"
  8.     a(6)="Ã"
  9.     a(7)="ã"
  10.     a(8)="Ạ"
  11.     a(9)="ạ"
  12.     a(10)="Ä‚"
  13.     a(11)="ă"
  14.     a(12)="Ắ"
  15.     a(13)="ắ"
  16.     a(14)="Ằ"
  17.     a(15)="ằ"
  18.     a(16)="Ẳ"
  19.     a(17)="ẳ"
  20.     a(18)="Ẵ"
  21.     a(19)="ẵ"
  22.     a(20)="Ặ"
  23.     a(21)="ặ"
  24.     a(22)="Â"
  25.     a(23)="â"
  26.     a(24)="Ấ"
  27.     a(25)="ấ"
  28.     a(26)="Ầ"
  29.     a(27)="ầ"
  30.     a(28)="Ẩ"
  31.     a(29)="ẩ"
  32.     a(30)="Ẫ"
  33.     a(31)="ẫ"
  34.     a(32)="Ậ"
  35.     a(33)="ậ"
  36.     a(34)="Đ"
  37.     a(35)="Ä‘"
  38.     a(36)="É"
  39.     a(37)="é"
  40.     a(38)="È"
  41.     a(39)="è"
  42.     a(40)="Ẻ"
  43.     a(41)="ẻ"
  44.     a(42)="Ẽ"
  45.     a(43)="ẽ"
  46.     a(44)="Ẹ"
  47.     a(45)="ẹ"
  48.     a(46)="Ê"
  49.     a(47)="ê"
  50.     a(48)="Ế"
  51.     a(49)="ế"
  52.     a(50)="Ề"
  53.     a(51)="ề"
  54.     a(52)="Ể"
  55.     a(53)="ể"
  56.     a(54)="Ễ"
  57.     a(55)="á»…"
  58.     a(56)="Ệ"
  59.     a(57)="ệ"
  60.     a(58)="Í"
  61.     a(59)="í"
  62.     a(60)="ÃŒ"
  63.     a(61)="ì"
  64.     a(62)="Ỉ"
  65.     a(63)="ỉ"
  66.     a(64)="Ĩ"
  67.     a(65)="Ä©"
  68.     a(66)="Ị"
  69.     a(67)="ị"
  70.     a(68)="Ó"
  71.     a(69)="ó"
  72.     a(70)="Ã’"
  73.     a(71)="ò"
  74.     a(72)="Ỏ"
  75.     a(73)="ỏ"
  76.     a(74)="Õ"
  77.     a(75)="õ"
  78.     a(76)="Ọ"
  79.     a(77)="ọ"
  80.     a(78)="Ô"
  81.     a(79)="ô"
  82.     a(80)="Ố"
  83.     a(81)="ố"
  84.     a(82)="á»’"
  85.     a(83)="ồ"
  86.     a(84)="á»”"
  87.     a(85)="ổ"
  88.     a(86)="á»–"
  89.     a(87)="á»—"
  90.     a(88)="Ộ"
  91.     a(89)="á»™"
  92.     a(90)="Æ "
  93.     a(91)="Æ¡"
  94.     a(92)="Ớ"
  95.     a(93)="á»›"
  96.     a(94)="Ờ"
  97.     a(95)="ờ"
  98.     a(96)="Ở"
  99.     a(97)="ở"
  100.     a(98)="á» "
  101.     a(99)="ỡ"
  102.     a(100)="Ợ"
  103.     a(101)="ợ"
  104.     a(102)="Ú"
  105.     a(103)="ú"
  106.     a(104)="Ù"
  107.     a(105)="ù"
  108.     a(106)="Ủ"
  109.     a(107)="ủ"
  110.     a(108)="Ũ"
  111.     a(109)="Å©"
  112.     a(110)="Ụ"
  113.     a(111)="ụ"
  114.     a(112)="Ư"
  115.     a(113)="Æ°"
  116.     a(114)="Ứ"
  117.     a(115)="ứ"
  118.     a(116)="Ừ"
  119.     a(117)="ừ"
  120.     a(118)="Ử"
  121.     a(119)="á»­"
  122.     a(120)="á»®"
  123.     a(121)="ữ"
  124.     a(122)="á»°"
  125.     a(123)="á»±"
  126.     a(124)="Ý"
  127.     a(125)="ý"
  128.     a(126)="Ỳ"
  129.     a(127)="ỳ"
  130.     a(128)="Ỷ"
  131.     a(129)="á»·"
  132.     a(130)="Ỹ"
  133.     a(131)="ỹ"
  134.     a(132)="á»´"
  135.     a(133)="ỵ"
  136.     b(0)="Á"
  137.     b(1)="á"
  138.     b(2)="À"
  139.     b(3)="à"
  140.     b(4)="Ả"
  141.     b(5)="ả"
  142.     b(6)="Ã"
  143.     b(7)="ã"
  144.     b(8)="Ạ"
  145.     b(9)="ạ"
  146.     b(10)="Ă"
  147.     b(11)="ă"
  148.     b(12)="Ắ"
  149.     b(13)="ắ"
  150.     b(14)="Ằ"
  151.     b(15)="ằ"
  152.     b(16)="Ẳ"
  153.     b(17)="ẳ"
  154.     b(18)="Ẵ"
  155.     b(19)="ẵ"
  156.     b(20)="Ặ"
  157.     b(21)="ặ"
  158.     b(22)="Â"
  159.     b(23)="â"
  160.     b(24)="Ấ"
  161.     b(25)="ấ"
  162.     b(26)="Ầ"
  163.     b(27)="ầ"
  164.     b(28)="Ẩ"
  165.     b(29)="ẩ"
  166.     b(30)="Ẫ"
  167.     b(31)="ẫ"
  168.     b(32)="Ậ"
  169.     b(33)="ậ"
  170.     b(34)="Đ"
  171.     b(35)="đ"
  172.     b(36)="É"
  173.     b(37)="é"
  174.     b(38)="È"
  175.     b(39)="è"
  176.     b(40)="Ẻ"
  177.     b(41)="ẻ"
  178.     b(42)="Ẽ"
  179.     b(43)="ẽ"
  180.     b(44)="Ẹ"
  181.     b(45)="ẹ"
  182.     b(46)="Ê"
  183.     b(47)="ê"
  184.     b(48)="Ế"
  185.     b(49)="ế"
  186.     b(50)="Ề"
  187.     b(51)="ề"
  188.     b(52)="Ể"
  189.     b(53)="ể"
  190.     b(54)="Ễ"
  191.     b(55)="ễ"
  192.     b(56)="Ệ"
  193.     b(57)="ệ"
  194.     b(58)="Í"
  195.     b(59)="í"
  196.     b(60)="Ì"
  197.     b(61)="ì"
  198.     b(62)="Ỉ"
  199.     b(63)="ỉ"
  200.     b(64)="Ĩ"
  201.     b(65)="ĩ"
  202.     b(66)="Ị"
  203.     b(67)="ị"
  204.     b(68)="Ó"
  205.     b(69)="ó"
  206.     b(70)="Ò"
  207.     b(71)="ò"
  208.     b(72)="Ỏ"
  209.     b(73)="ỏ"
  210.     b(74)="Õ"
  211.     b(75)="õ"
  212.     b(76)="Ọ"
  213.     b(77)="ọ"
  214.     b(78)="Ô"
  215.     b(79)="ô"
  216.     b(80)="Ố"
  217.     b(81)="ố"
  218.     b(82)="Ồ"
  219.     b(83)="ồ"
  220.     b(84)="Ổ"
  221.     b(85)="ổ"
  222.     b(86)="Ỗ"
  223.     b(87)="ỗ"
  224.     b(88)="Ộ"
  225.     b(89)="ộ"
  226.     b(90)="Ơ"
  227.     b(91)="ơ"
  228.     b(92)="Ớ"
  229.     b(93)="ớ"
  230.     b(94)="Ờ"
  231.     b(95)="ờ"
  232.     b(96)="Ở"
  233.     b(97)="ở"
  234.     b(98)="Ỡ"
  235.     b(99)="ỡ"
  236.     b(100)="Ợ"
  237.     b(101)="ợ"
  238.     b(102)="Ú"
  239.     b(103)="ú"
  240.     b(104)="Ù"
  241.     b(105)="ù"
  242.     b(106)="Ủ"
  243.     b(107)="ủ"
  244.     b(108)="Ũ"
  245.     b(109)="ũ"
  246.     b(110)="Ụ"
  247.     b(111)="ụ"
  248.     b(112)="Ư"
  249.     b(113)="ư"
  250.     b(114)="Ứ"
  251.     b(115)="ứ"
  252.     b(116)="Ừ"
  253.     b(117)="ừ"
  254.     b(118)="Ử"
  255.     b(119)="ử"
  256.     b(120)="Ữ"
  257.     b(121)="ữ"
  258.     b(122)="Ự"
  259.     b(123)="ự"
  260.     b(124)="Ý"
  261.     b(125)="ý"
  262.     b(126)="Ỳ"
  263.     b(127)="ỳ"
  264.     b(128)="Ỷ"
  265.     b(129)="ỷ"
  266.     b(130)="Ỹ"
  267.     b(131)="ỹ"
  268.     b(132)="Ỵ"
  269.     b(133)="ỵ"
  270. Function ctoutf8(vnstr)
  271. If IsNull(vnstr) then
  272.     ctoutf8=" "
  273.     exit function
  274. end if
  275. For i=0 to 133  
  276.     vnstr=Replace(vnstr,b(i),a(i))
  277. Next    
  278. ctoutf8=vnstr
  279. End function


Không mua hàng tiêu dùng của Trung Quốc, Đài Loan

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4760
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 515 time

Re: Chuyển đổi giữa Unicode (1252) và UTF-8

Gửi bàigửi bởi truongphu » T.Sáu 28/03/2008 4:17 pm

Có thể dùng đoạn code VB6 sau để khai báo b(133) được chăng?

Mã: Chọn hết

  1. Dim Chuôi As String, u As Integer
  2. Chuôi = "01930225019202247842784301950227784078410258025978547855785678577858785978607861786278630194022678447845784678477848784978507851785278530272027302010233020002327866786778687869786478650202023478707871787278737874787578767877787878790205023702040236788078810296029778827883021102430210024278867887021302457884788502120244788878897890789178927893789478957896789704160417789878997900790179027903790479057906790702180250021702497910791103600361790879090431043279127913791479157916791779187919792079210221025379227923792679277928792979247925"
  3.  
  4. For i = 0 To 133
  5.     b(i) = "&#" & Val(Mid(Chuôi, u + 1, 4)) & ";"
  6.     u = u + 4
  7. Next


nếu được, a(133) chắc cũng tương tự
Sửa lần cuối bởi truongphu vào ngày T.Sáu 28/03/2008 9:48 pm với 1 lần sửa.
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4760
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 515 time

Re: Chuyển đổi giữa Unicode (1252) và UTF-8

Gửi bàigửi bởi truongphu » T.Sáu 28/03/2008 9:41 pm

Vì bài gởi ở trên được duyệt nên xin bổ sung cho đủ cặp

Mã: Chọn hết

  1. Dim Câu As String
  2. Câu = "Á@á@À@à Ảả@Ã@ãẠạ@Ä‚@ăẮắẰằẲẳẴẵẶặ@Â@âẤấẦầẨẩẪẫẬậ@Đ@Ä‘@É@é@È@èẺẻẼẽẸẹ@Ê@êẾếỀềỂểỄễỆệ@Í@í@ÃŒ@ìỈỉ@Ĩ@ĩỊị@Ó@ó@Ã’@òỎỏ@Õ@õỌọ@Ô@ôỐốỒồỔổỖỗỘộ@Æ @ơỚớỜờỞởỠỡỢợ@Ú@ú@Ù@ùỦủ@Ũ@ũỤụ@Ư@ưỨứỪừỬửỮữỰự@Ý@ýỲỳỶỷỸỹỴỵ"
  3.  
  4. For i = 0 To 133
  5.     If Left(Mid(Câu, u + 1, 3), 1) = "@" Then
  6.     a(i) = Right(Mid(Câu, u + 1, 3), 2)
  7.     Else
  8.     a(i) = Mid(Câu, u + 1, 3)
  9.     End If
  10.     u = u + 3
  11. Next


Ghi chú: Câu as String là một chuỗi liên tục, nhưng do có chứa các ký tự xuống hàng nên biểu hiện trên text thành nhiều đoạn.
Sửa lần cuối bởi truongphu vào ngày T.Hai 31/03/2008 8:39 pm với 3 lần sửa.
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4760
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 515 time

Re: Chuyển đổi giữa Unicode (1252) và UTF-8

Gửi bàigửi bởi truongphu » CN 30/03/2008 8:53 pm

Mong BQT thông cảm, các bài viết đều thể hiện sự học tập tiến bộ từ CLBVB.
Và đây là đọan code 2 bài phụ ở trên:

Mã: Chọn hết

  1. Dim a() As String, b() As String, c As String, d As String
  2. a = Split("Á@á@À@à @Ả@ả@Ã@ã@Ạ@ạ@Ä‚@ă@Ắ@ắ@Ằ@ằ@Ẳ@ẳ@Ẵ@ẵ@Ặ@ặ@Â@â@Ấ@ấ@Ầ@ầ@Ẩ@ẩ@Ẫ@ẫ@Ậ@ậ@Đ@Ä‘@É@é@È@è@Ẻ@ẻ@Ẽ@ẽ@Ẹ@ẹ@Ê@ê@Ế@ế@Ề@ề@Ể@ể@Ễ@á»…@Ệ@ệ@Í@í@ÃŒ@ì@Ỉ@ỉ@Ĩ@Ä©@Ị@ị@Ó@ó@Ã’@ò@Ỏ@ỏ@Õ@õ@Ọ@ọ@Ô@ô@Ố@ố@á»’@ồ@á»”@ổ@á»–@á»—@Ộ@á»™@Æ @Æ¡@Ớ@á»›@Ờ@ờ@Ở@ở@á» @ỡ@Ợ@ợ@Ú@ú@Ù@ù@Ủ@ủ@Ũ@Å©@Ụ@ụ@Ư@Æ°@Ứ@ứ@Ừ@ừ@Ử@á»­@á»®@ữ@á»°@á»±@Ý@ý@Ỳ@ỳ@Ỷ@á»·@Ỹ@ỹ@á»´@ỵ", "@")
  3. c = "Á@á@À@à@Ả@ả@Ã@ã@Ạ@ạ@Ă@ă@Ắ@ắ@Ằ@ằ@Ẳ@ẳ@Ẵ@ẵ@Ặ@ặ@Â@â@Ấ@ấ@Ầ@ầ@Ẩ@ẩ@Ẫ@ẫ@Ậ@ậ@Đ@đ@É@é@È@è@Ẻ@ẻ@Ẽ@ẽ@Ẹ@ẹ@Ê@ê@Ế@ế@Ề@ề@Ể@ể@Ễ@ễ@Ệ@ệ@Í@í@Ì@ì@Ỉ@ỉ@Ĩ@ĩ@Ị@ị@Ó@ó@Ò@ò@Ỏ@ỏ@Õ@õ@Ọ@ọ@Ô@ô@Ố@ố@Ồ@ồ@Ổ@ổ@Ỗ@ỗ@Ộ@ộ@Ơ@ơ@Ớ@ớ@Ờ@ờ@Ở@ở"
  4. d = "@Ỡ@ỡ@Ợ@ợ@Ú@ú@Ù@ù@Ủ@ủ@Ũ@ũ@Ụ@ụ@Ư@ư@Ứ@ứ@Ừ@ừ@Ử@ử@Ữ@ữ@Ự@ự@Ý@ý@Ỳ@ỳ@Ỷ@ỷ@Ỹ@ỹ@Ỵ@ỵ"
  5. b = Split(c & d, "@")
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
VBNewbie
Thành viên tích cực
Thành viên tích cực
Bài viết: 113
Ngày tham gia: T.Bảy 29/03/2008 7:13 pm
Đến từ: Computer
Been thanked: 3 time
Liên hệ:

Re: Chuyển đổi giữa Unicode (1252) và UTF-8

Gửi bàigửi bởi VBNewbie » T.Năm 01/01/2009 3:23 pm

Còn cách tạo file UTF-8 thì sao ?
Ai bik thì chỉ em zới ! Đang làm bị khựng lại !
Ai bik em xin cám ơn nhìu ! :D
-------[[[[[[[ VMind - PM trắc nghiệm đa năng ]]]]]]]]------
http://vmind.co.cc/vmind
-------[[[[ Diễn đàn trí tuệ Việt Nam ! ]]]]]]]]-----
http://vmind.co.cc

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4760
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 515 time

Re: Chuyển đổi giữa Unicode (1252) và UTF-8

Gửi bàigửi bởi truongphu » T.Năm 01/01/2009 7:15 pm

Chu! khó thiệt, vì tôi bị rối trí khi đọc bài:
Căn bản Unicode cho VB6 programmers
ISO 10646 và Unicode
http://www.vietkey.net/forum/showthread.php?t=206

Tuy nhiên, tôi có thể viết đơn giản hơn tặng VBNewbie nhân năm mới
(mà hình như VBNewbie hỏi câu nầy nhiều lần)

Mã: Chọn hết

  1. Dim a() As String, b() As String
  2.  
  3. Private Sub CommandButton1_Click()
  4. Dim zz$, qq As Boolean
  5. If TextBox1 = "" Then Exit Sub
  6. For i = 1 To Len(TextBox1)
  7.     For u = 0 To 133
  8.         If Mid(TextBox1, i, 1) = ChrW(b(u)) Then
  9.             zz = zz & a(u)
  10.             qq = True
  11.             Exit For
  12.         End If
  13.     Next
  14.     If qq = False Then zz = zz & Mid(TextBox1, i, 1)
  15.     qq = False
  16. Next
  17.  
  18. TextBox2 = zz
  19. RichTextBox1 = zz
  20.  
  21. Open "C:\1.txt" For Output As #1
  22. Print #1, zz
  23. Close #1
  24.  
  25. End Sub
  26.  
  27. Private Sub Form_Load()
  28.  
  29. Dim C As String, d As String
  30. a = Split("Á@á@À@à@Ả@ả@Ã@ã@Ạ@ạ@Ä‚@ă@Ắ@ắ@Ằ@ằ@Ẳ@ẳ@Ẵ@ẵ@Ặ@ặ@Â@â@Ấ@ấ@Ầ@ầ@Ẩ@ẩ@Ẫ@ẫ@Ậ@ậ@Đ@Ä‘@É@é@È@è@Ẻ@ẻ@Ẽ@ẽ@Ẹ@ẹ@Ê@ê@Ế@ế@Ề@ề@Ể@ể@Ễ@á»…@Ệ@ệ@Í@í@ÃŒ@ì@Ỉ@ỉ@Ĩ@Ä©@Ị@ị@Ó@ó@Ã’@ò@Ỏ@ỏ@Õ@õ@Ọ@ọ@Ô@ô@Ố@ố@á»’@ồ@á»”@ổ@á»–@á»—@Ộ@á»™@Æ @Æ¡@Ớ@á»›@Ờ@ờ@Ở@ở@á» @ỡ@Ợ@ợ@Ú@ú@Ù@ù@Ủ@ủ@Ũ@Å©@Ụ@ụ@Ư@Æ°@Ứ@ứ@Ừ@ừ@Ử@á»­@á»®@ữ@á»°@á»±@Ý@ý@Ỳ@ỳ@Ỷ@á»·@Ỹ@ỹ@á»´@ỵ", "@")
  31. C = "193@225@192@224@7842@7843@195@227@7840@7841@258@259@7854@7855@7856@7857@7858@7859@7860@7861@7862@7863@194@226@7844@7845@7846@7847@7848@7849@7850@7851@7852@7853@272@273@201@233@200@232@7866@7867@7868@7869@7864@7865@202@234@7870@7871@7872@7873@7874@7875@7876@7877@7878@7879@205@237@204@236@7880@7881@296@297@7882@7883@211@243@210@242@7886@7887@213@245@7884@7885@212@244@7888@7889@7890@7891@7892@7893@7894@7895@7896@7897@416@417@7898@7899@7900@7901@7902@7903"
  32. d = "@7904@7905@7906@7907@218@250@217@249@7910@7911@360@361@7908@7909@431@432@7912@7913@7914@7915@7916@7917@7918@7919@7920@7921@221@253@7922@7923@7926@7927@7928@7929@7924@7925"
  33. b = Split(C & d, "@")
  34. End Sub
  35.  

Ghi chú: File txt tạo ra là file UTF8, không phải Unicode
Tập tin đính kèm
unicode to utf8 save as utf8.rar
(2.78 KiB) Đã tải 723 lần
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh


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