本帖最后由 null. 于 2025-5-10 23:06 编辑
解决读一个txt文件(UTF-8),分行读入,不乱码。
e:\\123.txt
设置为二进制模式
设置3为二进制模式
设置为4二进制模式

 - (defun read-utf8-file (sm / binarystream file filestream lines pos size str)
- (setq file "e:\\123.txt")
- (setq binarystream (vlax-create-object "Adodb.Stream"))
- (vlax-invoke binarystream 'Open)
- (vlax-invoke-Method binarystream 'LoadFromFile file)
-
- (vlax-put-property binarystream 'Type 2) ; 2文本模式读取
- (vlax-put-property binarystream 'Charset "utf-8")
- (vlax-put-property binarystream 'Position 2);将位置重置为起始位置
- (setq str (Vlax-Invoke-Method binarystream 'ReadText nil))
- (vlax-invoke binarystream 'flush)
- (vlax-invoke binarystream 'Close)
- (vlax-release-object binarystream)
- (while (setq pos (vl-string-search "\r\n" str))
- (setq lines (cons (substr str 1 pos) lines))
- (setq str (substr str (+ pos 3)))
- )
- (reverse (cons str lines))
- )

- (read-utf8-file nil)
("设置为二进制模式" "设置3为二进制模式" "设置为4二进制模式")
|