• 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

Đọc/Ghi file text có mã Unicode

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
truongphu
VIP
VIP
Bài viết: 4756
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: 509 time

Đọc/Ghi file text có mã Unicode

Gửi bàigửi bởi truongphu » T.Bảy 29/03/2008 10:43 am

Thủ thuật: Đọc/Ghi file text có mã Unicode
Tác giả: truongphu
Mô tả: Đọc và ghi file text có mã Unicode


Muốn đọc và ghi được Unicode từ file text bạn phải dùng chế độ Binary để đọc và ghi file mới được.

Đọc file:

Mã: Chọn hết

  1. Private Sub Form_Load()
  2. Dim fNum As Long, B() As Byte, fp
  3.     fp = "C:\Mùa Thu Lá Bay.txt"
  4.     fNum = FreeFile()
  5.     Open fp For Binary Access Read As #fNum
  6.         ReDim B(LOF(fNum))
  7.     Get #fNum, , B
  8.     Close #fNum
  9.  
  10.     Dim arr, i As Integer, s As String
  11.     arr = Split(B, vbCrLf)
  12.      For i = 0 To UBound(arr)
  13.             s = s & arr(i) & vbCrLf
  14.      Next i
  15. TextBox1 = s
  16. End Sub

Hoặc

Mã: Chọn hết

  1. Private Sub Command1_Click()
  2. Dim noidung()  As Byte
  3.     Open "C:\1.txt" For Binary Access Read As #1
  4.         ReDim noidung(LOF(1))
  5.         Get #1, , noidung
  6.     Close #1
  7. TextBox1 = noidung
  8. TextBox1 = Right(TextBox1, Len(TextBox1) - 1)
  9. End Sub

Hoặc bằng VB Script

Mã: Chọn hết

  1. Private Sub Command2_Click()
  2. Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\1.txt", 1, , -2)
  3.    TextBox1 = FSO.Readall
  4. End Sub


Ghi file:

Mã: Chọn hết

  1. Private Sub saveTextFile(str As String, fname As String)
  2. On Error Resume Next
  3.     Dim fNum As Long
  4.     Dim B() As Byte
  5.     If bFileExists(fname) Then
  6.         fNum = FreeFile()
  7.         Open fname For Binary Access Read As #fNum
  8.         ReDim B(LOF(fNum))
  9.         Get #fNum, , B
  10.         Close #fNum
  11.        
  12.         Dim arr, i As Integer, s As String
  13.         arr = Split(B, vbCrLf)
  14.         For i = 0 To UBound(arr)
  15.             s = s & arr(i) & vbCrLf
  16.         Next i
  17.         str = s & str
  18.     End If
  19.    
  20.     Kill fname
  21.  
  22.     fNum = FreeFile()
  23.     Open fname For Binary Access Write As #fNum
  24.         B = str
  25.     Put #fNum, , B
  26.    
  27.     Close #fNum
  28. End Sub

Hoặc

Mã: Chọn hết

  1. Private Sub Command3_Click()
  2. Open "C:\2.txt" For Binary As #1
  3.     Put #1, , Trim$(StrConv(TextBox1, vbUnicode))
  4. Close #1
  5. End Sub

Hoặc bằng VB Script

Mã: Chọn hết

  1. Private Sub Command4_Click()
  2. Set FSO = CreateObject("Scripting.FileSystemObject").CreateTextFile("C:\2.txt", True)
  3. Set FSO = Nothing
  4. Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\2.txt", 2, , -1)
  5.           FSO.Write TextBox1
  6. End Sub

Hoặc ghi file từ Clipboard

Mã: Chọn hết

  1. Private Const CF_UNICODETEXT As Long = 13
  2. Private Declare Function OpenClipboard Lib "user32.dll" (ByVal hWnd As Long) As Long
  3. Private Declare Function CloseClipboard Lib "user32.dll" () As Long
  4. Private Declare Function GetClipboardData Lib "user32.dll" (ByVal wFormat As Long) As Long
  5. Private Declare Function IsClipboardFormatAvailable Lib "user32.dll" (ByVal wFormat As Long) As Long
  6. Private Declare Function lstrcpy Lib "kernel32.dll" Alias "lstrcpyW" (ByVal lpString1 As Long, ByVal lpString2 As
  7.  
  8. Long) As Long
  9. Private Declare Function GlobalLock Lib "kernel32.dll" (ByVal hMem As Long) As Long
  10. Private Declare Function GlobalUnlock Lib "kernel32.dll" (ByVal hMem As Long) As Long
  11. Private Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
  12.  
  13. Private Function Get_clipboard() As String
  14.     Dim myStrPtr As Long, myLen As Long, myLock As Long, myData As String
  15.  
  16.     OpenClipboard 0&
  17.  
  18.     If IsClipboardFormatAvailable(CF_UNICODETEXT) = 0 Then MsgBox "Clipboard Text is not available now": Exit
  19.  
  20. Function
  21.  
  22.     myStrPtr = GetClipboardData(CF_UNICODETEXT)
  23.  
  24.     If myStrPtr = 0 Then
  25.         MsgBox "Failed to get Clipboard Text"
  26.     Else
  27.         myLock = GlobalLock(myStrPtr)
  28.         myLen = GlobalSize(myStrPtr)
  29.         myData = String$(myLen \ 2 - 1, vbNullChar)
  30.         lstrcpy StrPtr(myData), myLock
  31.         GlobalUnlock myStrPtr
  32.     End If
  33.  
  34.     CloseClipboard
  35.  
  36.     Get_clipboard = myData
  37. End Function
  38.  
  39. Private Sub Command5_Click()
  40. Open "C:\2.txt" For Binary As #1
  41.     Put #1, , Trim$(StrConv(Get_clipboard, vbUnicode))
  42. Close #1
  43. End Sub
Sửa lần cuối bởi truongphu vào ngày T.Sáu 30/05/2008 3:27 pm với 1 lần sửa.


o0o--truongphu--o0o

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

Giang Hồ
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 50
Ngày tham gia: T.Bảy 12/05/2007 2:36 pm
Đến từ: http://vn-soft.net
Been thanked: 1 time
Liên hệ:

Re: Đọc được Unicode từ file text

Gửi bàigửi bởi Giang Hồ » CN 20/04/2008 3:25 pm

Ngoài cách đọc ở dạng Binary còn có thể dùng Object để đọc và ghi cũng dc


Mã: Chọn hết

  1. Private Sub UniReadText(ByVal sFileName As String)
  2. Dim txt
  3.    Dim objStream As Object
  4.    Set objStream = CreateObject("Scripting.FileSystemObject").OpenTextFile(sFileName, 1, False, -2)
  5.       If (Not objStream Is Nothing) Then
  6.          With objStream
  7.             Open sFileName For Input As #1 ' Mo file.
  8.             Do While Not EOF(1)
  9.                 Line Input #1, txt
  10.                 txt = .ReadLine 'Doc tung dong
  11.             Loop
  12.             Close #1
  13.          .Close
  14.          End With
  15.          Set objStream = Nothing
  16.       End If
  17. End Sub
  18.  
  19.  
  20. Private Sub UniWriteText(ByVal sFileName As String)
  21. Dim txt As String
  22. txt = "caulacbovb.com"
  23. Dim i As Integer
  24. Dim objStream As Object
  25.       Set objStream = CreateObject("Scripting.FileSystemObject").OpenTextFile(sFileName, 2, True, -1)
  26.       If (Not objStream Is Nothing) Then
  27.          With objStream
  28.             .Write txt 'Ghi vao file
  29.             .Close
  30.          End With
  31.          Set objStream = Nothing
  32.       End If
  33. End Sub
Code chỉ một lần mà fix bug thì mãi mãi
-----------------------------------
VnSecurity 2008 - Bảo vệ máy tính theo phong cách của bạn
Website: http://vn-soft.net

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
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: 509 time

Re: Đọc được Unicode từ file text

Gửi bàigửi bởi truongphu » CN 20/04/2008 9:18 pm

Được đấy!

Cấu trúc thông thường là:

Mã: Chọn hết

  1.   Dim objStream, ff
  2.    Set objStream = CreateObject("Scripting.FileSystemObject")
  3.     Set ff = objStream.OpenTextFile("e:\win\desktop\aaa.txt", 1, False, -2)

Sẽ không chạy! do đọc không được mã Unicode
(đính chính hôm nay 21/4: chạy được, cái mới là Giang hồ viết gọn hơn)

vậy mà Giang Hồ viết:

Mã: Chọn hết

  1. Set objStream = CreateObject("Scripting.FileSystemObject").OpenTextFile("e:\win\desktop\aaa.txt", 1, False, -2)

Lại chạy êm, đọc được Unicode.
Đây là điều hôm nay tôi mới học.
Cảm ơn Giang Hồ
Sửa lần cuối bởi truongphu vào ngày T.Hai 21/04/2008 1:01 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: 4756
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: 509 time

Re: Đọc được Unicode từ file text

Gửi bàigửi bởi truongphu » T.Hai 21/04/2008 12:58 pm

Hồi tối qua thiếu tỉnh táo và cẩn thận nên có bài viết trên, hôm nay xin đính chính với đoạn code sau:

Mã: Chọn hết

  1. Private Function ReadFileUni(FileName As String) As String
  2. Dim FSO
  3.    Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 1, , -2)
  4.    ReadFileUni = FSO.Readall
  5.    Set FSO = Nothing
  6. End Function
  7. '''''''''''''''''
  8. Private Function WriteFileUni(FileName As String, Unistr As String)
  9. Dim FSO As Object    'tao 1 file mo'i rôi mo'i ghi vào
  10.       Set FSO = CreateObject("Scripting.FileSystemObject").CreateTextFile(FileName, True)
  11.       Set FSO = Nothing
  12.       Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 2, , -1)
  13.           FSO.Write Unistr
  14.       Set FSO = Nothing
  15. End Function

:D : rất gọn phải không các bạn?
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: Đọc được Unicode từ file text

Gửi bàigửi bởi VBNewbie » T.Hai 21/04/2008 6:08 pm

Sao em chạy bị lỗi .
-------[[[[[[[ 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: 4756
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: 509 time

Re: Đọc được Unicode từ file text

Gửi bàigửi bởi truongphu » T.Hai 21/04/2008 8:48 pm

Gởi VBNewbie
Lẽ ra tôi không viết dòng nầy, vì như các người khác, thế là OK (vì dễ quá mà! :D )
Tuy nhiên, trước đây, tôi cũng như bạn!
1- Ví dụ: khi bạn dùng dòng sau đây: "e:\win\desktop\aaa.txt" thì bảo đảm phải có đĩa e, phải có folder "win" và dưới nó là desktop, và phải có aaa.txt
2- tập tin aaa.txt bạn phải lưu dưới dạng Unicode chứ không phải dạng UTF8! và nội dung bạn phải gõ: "Bạn trương phú
Nhờ bạn trả lời...hi hi!"
3- Và sau đây là code (cũng như trên) để bạn vui: Phải có 1 TextBox1 hổ trợ Unicode (form 2.0) và set font = arial hay tahoma

Mã: Chọn hết

  1. Private Function ReadFileUni(FileName As String) As String
  2. Dim FSO
  3.    Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 1, , -2)
  4.    ReadFileUni = FSO.Readall
  5.    Set FSO = Nothing
  6. End Function
  7.  
  8. Private Function WriteFileUni(FileName As String, Unistr As String)
  9. Dim FSO As Object    'tao 1 file mo'i rôi mo'i ghi vào
  10.       Set FSO = CreateObject("Scripting.FileSystemObject").CreateTextFile(FileName, True)
  11.       Set FSO = Nothing
  12.       Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 2, , -1)
  13.           FSO.Write Unistr
  14.       Set FSO = Nothing
  15. End Function
  16.  
  17. Private Sub Form_Load()
  18. Dim aa
  19. TextBox1 = ReadFileUni("e:\win\desktop\aaa.txt")
  20. aa = WriteFileUni("e:\win\desktop\bbb.txt", TextBox1)
  21. End Sub
  22.  

Mong bạn vừa ý
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: Đọc được Unicode từ file text

Gửi bàigửi bởi VBNewbie » T.Ba 22/04/2008 11:28 am

Bạn chỉ mình cái cách Binary đó bạn có thể làm 1 project cho minh được không vì ở trên bạn khai biến bị lỗi tùm lum. Mong bạn khai báo rõ ràng hơn.
Thanks !
-------[[[[[[[ 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
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: Đọc được Unicode từ file text

Gửi bàigửi bởi VBNewbie » T.Bảy 17/05/2008 8:38 pm

Xin lỗi bác nha ! Con hok bik pác lớn tuổi !
Pác bik cái đọc bằng Binary thi chỉ con với, còn đọc bằng 2 cách trên chỉ đọc được Unicode mà hok đọc dc UTF-8. Thank you !
-------[[[[[[[ 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: 4756
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: 509 time

Re: Đọc được Unicode từ file text

Gửi bàigửi bởi truongphu » T.Sáu 30/05/2008 3:49 pm

Đã lâu không coi lại bài nầy, xin lỗi VBNewbie
Cách

Mã: Chọn hết

  1. Open fp For Binary Access Read As #fNum
  2.         ReDim B(LOF(fNum))
  3.     Get #fNum, , B
  4.     Close #fNum
không hổ trợ file text UTF-8. (Muốn thể hiện tiếng Việt còn phải qua một lần chuyển mã nữa!)

Bạn dùng thêm một Richtextbox để thể hiện nội dung file với cách đọc từng dòng

Mã: Chọn hết

  1. Private Sub Form_Load()
  2. Dim B$, fp$, TextLine$
  3.     fp = "C:\Mùa Thu Lá Bay1.txt"
  4.     Open fp For Input As #1
  5.     Do While Not EOF(1)
  6.             Line Input #1, TextLine
  7.         B = B & TextLine & vbCr
  8.    Loop
  9. RichTextBox1 = B
  10. End Sub
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: Đọc được Unicode từ file text

Gửi bàigửi bởi VBNewbie » T.Bảy 14/06/2008 7:51 pm

Thank bác truongphu ! Nhưng con thử sài hàm chuyển từ UTF8 - Unicode nhưng bị lỗi !
-------[[[[[[[ 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
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: Đọc được Unicode từ file text

Gửi bàigửi bởi VBNewbie » T.Năm 01/01/2009 10:01 am

Hik ai chỉ cách tạo file text UTF-8 zới ! Em đang bí !
-------[[[[[[[ 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: 4756
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: 509 time

File TXT là UTF-8

Gửi bàigửi bởi truongphu » T.Sáu 02/01/2009 3:02 pm

C1- Đọc file:
Dùng lệnh Open... For Input As... như bình thường, tuy nhiên ta phải chuyển mã từ UTF-8 sang Unicode với hàm tương ứng
* Form1 cần Command1 và TextBox1 (MS Form 2.0, Font Arial, Multiline=true). File txt utf8 là C:\3.txt

Mã: Chọn hết

  1. Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
  2. Private Const CP_UTF8 = 65001
  3.  
  4. Private Sub Command1_Click()
  5. Dim zz$
  6. Open "C:\3.txt" For Input As #1
  7.     Do While Not EOF(1)
  8.             Line Input #1, aa
  9.             zz = zz & aa & vbCrLf
  10.     Loop
  11.     Close #1
  12.     TextBox1 = UTF82Unicode(zz)
  13. End Sub
  14.  
  15. Private Function UTF82Unicode(ByVal sUTF8 As String) As String
  16. Dim UTF8Size&, BufferSize&, BufferUNI$, LenUNI&, bUTF8() As Byte
  17. If LenB(sUTF8) = 0 Then Exit Function
  18. bUTF8 = StrConv(sUTF8, vbFromUnicode)
  19. UTF8Size = UBound(bUTF8) + 1
  20. BufferSize = UTF8Size * 2
  21. BufferUNI = String$(BufferSize, vbNullChar)
  22. LenUNI = MultiByteToWideChar(CP_UTF8, 0, bUTF8(0), UTF8Size, StrPtr(BufferUNI), BufferSize)
  23. If LenUNI Then UTF82Unicode = Left$(BufferUNI, LenUNI)
  24. End Function


C2- Ghi file:
Có thể gõ UTF8 từ bàn phím (chọn mã) hoặc phải chuyển đổi từ Unicode sang UTF8. Quá trình ghi file bình thường với Open... For Output As...
* Form1 cần Command1 và TextBox1 (MS Form 2.0, Font Arial, Multiline=true). File txt utf8 là C:\3.txt

Mã: Chọn hết

  1. Dim a() As String, b() As String
  2.  
  3. Private Sub Command1_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. Open "C:\3.txt" For Output As #1
  19. Print #1, zz
  20. Close #1
  21. End Sub
  22.  
  23. Private Sub Form_Load()
  24. Dim C As String, d As String
  25. a = Split("Á@á@À@à @Ả@ả@Ã@ã@Ạ@ạ@Ă@ă@Ắ@ắ@Ằ@ằ@Ẳ@ẳ@Ẵ@ẵ@Ặ@ặ@Â@â@Ấ@ấ@Ầ@ầ@Ẩ@ẩ@Ẫ@ẫ@Ậ@ậ@
  26. Đ@Ä‘@É@é@È@è@Ẻ@ẻ@Ẽ@ẽ@Ẹ@ẹ@Ê@ê@Ế@ế@Ề@ề@Ể@ể@Ễ@á»…@Ệ@ệ@Í@í@ÃŒ@ì@Ỉ@ỉ@Ĩ@Ä©@Ị@ị@Ó@ó@Ã’@ò@Ỏ@ỏ@Õ@õ@Ọ@ọ@Ô@ô@Ố@ố@á»’@ồ@á»”@ổ@á»–@á»—@Ộ@á»™@Æ @Æ¡@Ớ@á»›@Ờ@ờ@Ở@ở@á»@ỡ@Ợ@ợ@Ú@ú@Ù@ù@Ủ@ủ@Ũ@Å©@Ụ@ụ@Ư@Æ°@Ứ@ứ@Ừ@ừ@Ử@á»­@á»®@ữ@á»°@á»±@Ý@ý@Ỳ@ỳ@Ỷ@á»·@Ỹ@ỹ@á»´@ỵ", "@")
  27. C =
  28. "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"
  29. d =
  30. "@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"
  31. b = Split(C & d, "@")
  32. End Sub

Nếu trong phần ghi file UTF8 có trắc trở vì code dài, xin load project
http://www.caulacbovb.com/forum/download/file.php?id=4015
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: 4756
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: 509 time

Re: Đọc được Unicode từ file text

Gửi bàigửi bởi truongphu » T.Bảy 03/01/2009 12:36 pm

Bổ sung:
Đọc từng dòng với file TXT unicode
Cần TextBox1 (MS Form 2.0 font: arial Multiline=true)

Mã: Chọn hết

  1.  Dim MyFile
  2.   Dim fso As New FileSystemObject
  3.   Set MyFile = fso.OpenTextFile("c:\unicode.txt", 1, , -2)
  4.   Do While Not MyFile.AtEndOfStream
  5.     TextBox1 = TextBox1 & MyFile.ReadLine & vbCrLf
  6.   Loop

Viết từng dòng với file TXT unicode

Mã: Chọn hết

  1.  Dim MyFile
  2.   Dim fso As New FileSystemObject
  3.   Set MyFile = fso.OpenTextFile("c:\unicode.txt", ForAppending, , -2)
  4.   MyFile.WriteLine "Mùa Thu Lá Bay"
  5.   MyFile.WriteBlankLines(1)
  6.   MyFile.WriteLine "Mùa Thu Lá Bay Anh Ðã Ði rôi"
o0o--truongphu--o0o

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

coelsman
Bài viết: 3
Ngày tham gia: T.Sáu 13/04/2012 4:36 pm
Has thanked: 4 time

Re: Đọc/Ghi file text có mã Unicode

Gửi bàigửi bởi coelsman » T.Sáu 27/04/2012 3:44 pm

Bác Phú ơi, sao cháu làm cái code hệt của bác sao nó lỗi vậy nè:
  1. Option Explicit
  2.  
  3. Private Function ReadFileUni(FileName As String) As String
  4.     Dim FSO
  5.     Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 1, , -2)
  6.     ReadFileUni = FSO.Readall
  7.     Set FSO = Nothing
  8. End Function
  9.  
  10. Private Function WriteFileUni(FileName As String, Unistr As String)
  11.     Dim FSO As Object
  12.     Set FSO = CreateObject("Scripting.FileSystemObject").CreateTextFile(FileName, True)
  13.     Set FSO = Nothing
  14.     Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 2, , -1)
  15.     FSO.Write Unistr
  16.     Set FSO = Nothing
  17. End Function
  18.  
  19. Private Sub Form_Load()
  20.     Dim aa
  21.     Text1 = ReadFileUni(App.Path & "aaa.txt")
  22.     aa = WriteFileUni(App.Path & "bbb.txt", Text1)
  23. End Sub


Nó báo lỗi "File not found" ở trong hàm ReadFileUni, dòng
  1. Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 1, , -2)


Dạ file aaa.txt cháu tạo ra từ trước rồi bác ạ, font Arial, Unicode. Cháu nhìn code ở Sub FormLoad cháu nghĩ là file bbb.txt sẽ copy nội dung từ file aaa.txt thông qua Text1 đúng ko ợ?
Cháu giờ còn gà lắm ợ, đang loay hoay mãi mà ko hiển thị nổi nội dung file txt ra text bác ợ.

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
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: 509 time

Re: Đọc/Ghi file text có mã Unicode

Gửi bàigửi bởi truongphu » T.Bảy 28/04/2012 9:49 am

coelsman đã viết:Nó báo lỗi "File not found" ở trong hàm ReadFileUni, dòng
Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 1, , -2)


Dòng trên là nguyên mẫu của hàm, không thể sai được, vậy lỗi xẩy ra khi ta gọi đối số của nó.
Đối số của hàm ReadFileUni là: (FileName)
vậy sai ở cách gọi đối số FileName
cách suy luận lỗi là như thế.

Xem lại bạn gọi đối số ở Form_Load
coelsman đã viết:Text1 = ReadFileUni(App.Path & "aaa.txt")


Thấy lỗi chưa? App.Path & "aaa.txt"
chưa thấy thì ngẫm một lát :D
o0o--truongphu--o0o

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

Thao Nguyen
Bài viết: 1
Ngày tham gia: T.Năm 11/07/2013 9:41 am

Re: Đọc/Ghi file text có mã Unicode

Gửi bàigửi bởi Thao Nguyen » T.Hai 29/07/2013 10:42 am

cho mình hỏi cái này, mình đang làm 1 form đăng nhập vào hệ thống gồm 4 textbox, txtTenServer, txtTenCSDL, txtTenDangNhap, txtMatKhau, khi mình đăng nhập lần đầu thì phải điền dữ liệu vào các text, khi đăng nhập lại lần 2 thì dữ liệu được lưu vào file txt, khi đó nó tự load dữ liệu lên, mình chỉ điền mật khẩu thôi, mấy bạn chỉ mình code ghi và đọc file txt trong vb nha. cám ơn mọi người nhiều lắm viết bằng vb net


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