明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1873|回复: 7

[讨论] utf8文本读入后,加入内容后,输出中文变乱码

[复制链接]
发表于 2014-2-21 20:20 | 显示全部楼层 |阅读模式
本帖最后由 lixuedong 于 2014-2-21 23:13 编辑

我有一文本,里面有中文。是正常的。
我用一个lisp程序,在文本前面加中文。加进去的中文是正常,原来的变成乱码。



(setvar "TEXTOUTPUTFILEFORMAT" 1)
(setq txt_row1 (vl-list->string'(68 58 92 91 120 121 122 95 200 237 188 254 92)))
(setq txt_row2 txt_row1 )
(setq txt_row1 (strcat txt_row1
                       "2012cadlsp"
                       (chr 59)
                       txt_row1
                       "99lsp"
                       (chr 59)
                       txt_row1
                       "acadfonts"
                       (chr 59)
                       txt_row1
                       "hlp"
                       (chr 59)
                       txt_row1
                       "函数库"
                       (chr 59)
                       txt_row1
                       "99lsp\\dwg_ss"
                       (chr 59)
                       "[ACADFOLDERS]</Value>"
               )
)
(write-line txt_row2 f_txt1)
(write-line txt_row1 f_txt1)
(write-line "" f_txt1)
(write-line "" f_txt1)
(setq f_txt (open (findfile "xyz_old.txt") "R"))
(setq f_txt1 (open (findfile "xyz.txt") "W"))
(while (setq txt_row (read-line f_txt))
(print txt_row)
      (write-line txt_row f_txt1)
)

(close f_txt)
(close f_txt1)


==================================================
如果先写原有文字,后加新的,新的文字是就会乱码。情况和刚才的是相反的。
如果只是其中一种,打开的中文都是正常的。

xyz_old.txt" 的是 utf8编码
cad输出的文件xyz.txt是ansi编码(cad默认是ansi)


TEXTOUTPUTFILEFORMAT
类型: 整数 保存位置: 图形 初始值: 0 提供日志文件的 Unicode 选项。 0 ANSI 格式 1 UTF-8 (Unicode) 2 UTF-16LE (Unicode) 3 UTF-16BE (Unicode)

(setvar "TEXTOUTPUTFILEFORMAT" 1 );改成utf8
但输出的xyz.txt 还是ansi编码

怎么样让它们的文字编码一致。或者让输出是utf8编码的文件?



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2014-2-21 22:10 | 显示全部楼层
;;试试

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2014-2-21 22:38 | 显示全部楼层
本帖最后由 lixuedong 于 2014-2-21 22:45 编辑
xyp1964 发表于 2014-2-21 22:10
;;试试

程序的运行是差不多的。
xyz_old.txt这个文件,你已改成 ANSI 格式,
xyz_old.txt为 utf8 格式,一样不行的。

变成同一个类型,我的程序也行的,不会乱码。

我希望的是输出文件是utf8编码的,输出文件的格式为utf8编码的。
 楼主| 发表于 2014-2-21 23:23 | 显示全部楼层
本帖最后由 lixuedong 于 2014-2-21 23:24 编辑

增加一个D:\xyz_utf8.txt的文件(编码是utf8),再通过lisp读进了,虽然查看到是乱码。但“输入文件”和“增加的文字”保持一致了。所以输出的文件,也是utf8编码。
办法比较笨了,至少问题解决了。是个变通的办法。

(defun c:tt (/)

(setq f_txt (open "D:\\xyz_utf8.txt" "R"))
(setq txt_row1 (read-line f_txt))
(close f_txt)
(setq f_txt (open (findfile "xyz_old.txt") "R"))
(setq f_txt1 (open (findfile "xyz.txt") "W"))
(write-line txt_row1 f_txt1)
(write-line "" f_txt1)
(write-line "" f_txt1)
(while (setq txt_row (read-line f_txt))
(print txt_row)
      (write-line txt_row f_txt1)
)
(close f_txt)
(close f_txt1)
)

xyz_utf8.txt

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2016-2-1 22:00 | 显示全部楼层
期待解决办法
发表于 2016-2-4 00:57 来自手机 | 显示全部楼层
0.0
Xml的解析可以直接调用Dom
百度个vb处理xml的例子改写试试吧
发表于 2016-2-4 07:15 | 显示全部楼层
雪山飞狐_lzh 发表于 2016-2-4 00:57
0.0
Xml的解析可以直接调用Dom
百度个vb处理xml的例子改写试试吧

没明白,dom应用没用过,我想得到utf8的文档 用write-line 或者autolisp可以调用的其他方法???
发表于 2016-2-4 09:20 | 显示全部楼层
本帖最后由 Gu_xl 于 2016-2-4 09:21 编辑

加载XLRX_API
XLRX-File-ReadText
   功能:读取ANSI/UNICODE/UTF8文本文件内容

      语法: (XLRX-File-ReadText Filename [flag=nil])
      参数:
      filename 文件名称
     flag 提供且不为nil,则文本按行返回字符串列表
       返回值: 成功返回字符串或按行返回字符串列表
XLRX-File-SaveTextStr
   功能:将文本字串保存为ANSI/UNICODE/UTF8文本文件

      语法: (XLRX-File-TextSave strBuf/strList filename [type=0])
     参数:
     strBuf/strList 文本字符串/字符串列表
     filename 要保存的文件名称
     type 文本文件类型,可选参数,type:0=ANSI格式 1=UNICODE格式 2 =UTF8格式
返回值: 成功返回T,否则返回nil
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-29 02:53 , Processed in 0.277404 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表