乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 117|回复: 9

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

[复制链接]

15

主题

32

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
92
发表于 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那位帮忙分析下错误原因,谢谢!
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-5-19 12:11:00 | 显示全部楼层
你的程序不能正确运行...注意函数和参数的用法...括号的第一项是函数名,后面如果有,是参数,(princ (a)),其中princ是函数,(a)是参数,但这个(a)又是一个表达式(因为有括号),其中a是函数,没有参数,,,但明显a是一个变量,而不是函数,,,所以出错
回复

使用道具 举报

15

主题

32

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
92
发表于 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)
        )
我把程序改了,
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-5-19 14:21:00 | 显示全部楼层
VB.net用的默认编码不是ASCII,而是UTF8,在VB.net写文件时要把编码改一下
回复

使用道具 举报

15

主题

32

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
92
发表于 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
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-5-19 14:32:00 | 显示全部楼层
你用System.Text.Encoding.Default试试
回复

使用道具 举报

15

主题

32

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
92
发表于 2004-5-19 14:32:00 | 显示全部楼层

naswei42ovv.jpg

naswei42ovv.jpg

回复

使用道具 举报

15

主题

32

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
92
发表于 2004-5-19 14:34:00 | 显示全部楼层
好的,
回复

使用道具 举报

15

主题

32

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
92
发表于 2004-5-19 14:38:00 | 显示全部楼层
ok,好了,嗨,我那些都试了,唯独没有试这个,我想默认的就不用试了。真没想到。
回复

使用道具 举报

15

主题

32

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
92
发表于 2004-5-19 14:39:00 | 显示全部楼层
真要命。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-8-17 03:01 , Processed in 0.399733 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表