Vâng, trong một số trường hợp, chúng ta cần thực hiện điều này trong WSH trong máy không có ADO. Trong trường hợp này, hãy nhớ rằng WSH không tạo tệp theo định dạng UTF-8 (phương thức CreateTextFile không hoạt động với UTF-8), nhưng hoàn toàn có thể thao tác tệp UTF-8 (dữ liệu phụ thêm). Nghĩ về điều này, tôi đã tìm ra một giải pháp không chính thống. Thực hiện theo các bước sau:
1) Mở NOTEPAD trống, nhấp vào TẬP_TIN> LƯU AS, nhập tên cho tệp (như UTF8FileFormat.txt, ví dụ), thay đổi trường "Mã hóa" thành UTF-8 và nhấp vào [Tiết kiệm]. Rời khỏi NOTEPAD.
2) Trong WSH của bạn, bạn sẽ sử dụng UTF8FileFormat.txt để tạo tệp văn bản UTF8 của mình. Để làm điều này, sau khi khai báo FileSystemObject của bạn, sử dụng phương thức CopyFile để sao chép tệp UTF8FileFormat.txt sang tệp mới (nhớ sử dụng tùy chọn Ghi đè) và, sau đó, sử dụng phương thức OpenTextFile để mở tệp mới của bạn với tùy chọn ForAppending và NoCreate. Sau này, bạn sẽ có thể viết trong tệp này bình thường (như trong phương thức CreateTextFile). Tệp mới của bạn sẽ ở định dạng UTF-8. Dưới đây là một ví dụ:
'### START
' ### REMEMBER: You need to create the UTF8FileFormat.txt file in a blank
' ### NOTEPAD with UTF-8 Encoding first.
Unicode=-1 : ForAppending=8 : NoCreate=False : Overwrite=True
set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile "UTF8FileFormat.txt","MyNewUTF8File.txt",Overwrite
set UTF8 = fs.OpenTextFile("MyNewUTF8File.txt", ForAppending, NoCreate)
UTF8.writeline "My data can be writed in UTF-8 format now"
UTF8.close
set UTF8 = nothing
'### END
Nguồn
2017-11-18 10:22:12
'unicode' có nghĩa là gì trong vbscript? Mã hóa nào nó thực sự sử dụng? –
vbscript có thể ghi tệp theo mã hóa UTF-16 làm mặc định. UTF-16 sẽ có 0x00 trong tất cả các nơi như là byte bậc cao trong văn bản phương Tây. Và, không phải là pedantic, nhưng UTF-8 * là * Unicode; nó là một chương trình mã hóa Unicode cụ thể. – DaveE
Một trong hai câu trả lời dưới đây có giúp/làm việc cho bạn không? :-) – stealthyninja