明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2962|回复: 9

读文件时汉字怎么变成乱码了

[复制链接]
发表于 2004-5-19 12:03:00 | 显示全部楼层 |阅读模式
程序如下: ;得到画法数据.
(defun C:GetDrawData ( / List1 f1 f a) ;( / DrawData1)
(setq f1 "d:/ls/DrawData.txt")
(setq f (open f1 "r"))
(while (setq a (read-line f))
(setq a (strcat "(" a ")"))
(setq a (read a))
(print(a)) (setq list1 (cons a list1))

)
(print(list1)) ) 文件 d:/ls/DrawData.txt 中的数据是用VB.net的StreamWrite对象用默认编码写的: "托架1" 1000 235 200 "托架" 765 可程序运行结果切是如下: "鎵樻灦1" 1000 235 200 "鎵樻灦" 765 那位帮忙分析下错误原因,谢谢!
发表于 2004-5-19 12:11:00 | 显示全部楼层
你的程序不能正确运行...注意函数和参数的用法...括号的第一项是函数名,后面如果有,是参数,(princ (a)),其中princ是函数,(a)是参数,但这个(a)又是一个表达式(因为有括号),其中a是函数,没有参数,,,但明显a是一个变量,而不是函数,,,所以出错
 楼主| 发表于 2004-5-19 14:07:00 | 显示全部楼层
哦,是的,那两处都错了,可是我把程序改了,我的问题依然存在,显示的结果还是: ("鎵樻灦1" 1000 235 200 "鎵樻灦" 765),不知道是怎么回事?在cad里从*.TXt文件中读回来的数据是使用什么编码呀。 (defun C:GetDrawData ( / List1 f1 f a) ;( / DrawData1)
(setq f1 "d:/ls/DrawData.txt")
(setq f (open f1 "r"))
(while (setq a (read-line f))
(setq a (strcat "(" a ")"))
(setq a (read a))
(print a ) (setq list1 (cons a list1))

)
(print list1) ) 我把程序改了,
发表于 2004-5-19 14:21:00 | 显示全部楼层
VB.net用的默认编码不是ASCII,而是UTF8,在VB.net写文件时要把编码改一下
 楼主| 发表于 2004-5-19 14:29:00 | 显示全部楼层
我都试过了, System.Text.Encoding.ASCII System.Text.Encoding.BigEndianUnicode System.Text.Encoding.Unicode 和UTF8 和UTF7 都试了,都不行。代码有问题吗?我代码是: Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
On Error Resume Next Dim i, j As Integer
Dim StrDrawData(5) As String
Dim Str1 As String Dim StrPath = "d:\ls\DrawData.txt"
Dim FStream1 As FileStream
FStream1 = File.Open(StrPath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read)
Dim SW1 As New StreamWriter(FStream1, System.Text.Encoding.ASCII)
'SW1.NewLine = "\r\n" With C1FlexGrid2
For i = .Rows.Fixed To .Rows.Count - 1
For j = .Cols.Fixed To .Cols.Count - 1
If .Cols(j).DataType.ToString = "System.String" Then
StrDrawData(j - 1) = """" & .GetDataDisplay(i, j) & """"
Else
StrDrawData(j - 1) = .GetDataDisplay(i, j)
End If
Next Str1 = Str1.Join(" ", StrDrawData)
SW1.WriteLine(Str1)
'SW1.NewLine = "\r\n"
'MsgBox(Str1)
Next
End With SW1.Close()
FStream1.Close() MsgBox("ok")


End Sub
发表于 2004-5-19 14:32:00 | 显示全部楼层
你用System.Text.Encoding.Default试试
 楼主| 发表于 2004-5-19 14:32:00 | 显示全部楼层

本帖子中包含更多资源

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

x
 楼主| 发表于 2004-5-19 14:34:00 | 显示全部楼层
好的,
 楼主| 发表于 2004-5-19 14:38:00 | 显示全部楼层
ok,好了,嗨,我那些都试了,唯独没有试这个,我想默认的就不用试了。真没想到。
 楼主| 发表于 2004-5-19 14:39:00 | 显示全部楼层
真要命。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 02:06 , Processed in 0.203528 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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