Foxtable(狐表)用户栏目专家坐堂 → [求助]Encoding.Default在不同的电脑上显示不同


  共有2990人关注过本帖树形打印复制链接

主题:[求助]Encoding.Default在不同的电脑上显示不同

帅哥哟,离线,有人找我吗?
chnfo
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2240 积分:18457 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]Encoding.Default在不同的电脑上显示不同  发帖心情 Post By:2020/11/29 11:02:00 [只看该作者]

发现一个奇怪的现象

Dim s As String = FileSys.ReadAllText("D:\CS.txt", Encoding.Default)
output.show(s)

就这一句,在电脑A上执行,没有乱码
但在B电脑上执行,显示的有乱码,把 Encoding.Default删除,就与A电脑上执行的结果一致

但在电脑A上执行Dim s As String = FileSys.ReadAllText("D:\CS.txt"),又显示为乱码

这个该如何是好啊?

补充:文件路径可能会有中文(上面的D:\只是示意,可能是D:\备份文档\cs.txt),文件内容里面有中文
[此贴子已经被作者于2020/11/29 11:04:46编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/29 21:01:00 [只看该作者]

那就指定编码:Dim s As String = FileSys.ReadAllText("D:\CS.txt", Encoding.UTF8)

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2240 积分:18457 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/11/30 9:06:00 [只看该作者]

我是说本来txt里的文本正常的,但是A电脑是win7,必须用default才能读出来显示正常;但同一个文件,在B电脑上win10加了default不正常,去掉反而正常了。 这样不行啊,同一个txt配置文件,用来做系统打开前的内容校验,不是闹笑话了?A电脑可以,B电脑不行?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/30 9:08:00 [只看该作者]

Encoding.Default不是不确定的,根据不同系统,选择的不同编码方式会有不同。但是文件的编码是固定的,直接指定编码即可

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2240 积分:18457 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/11/30 9:24:00 [只看该作者]

现在两台电脑在面前,一台win7中文版,一台win10中文版。同一个狗、同一个文本文件(文件名、内容完全一致,里面有中文)。执行readalltext(路径,encoding.default),一个显示乱码,一个正常;如果去掉default,就正好反过来。如果改成utf8,两个除了中文部分,其它正常。网上度了一下,说是不同系统可能字库不同,这不要命了?
[此贴子已经被作者于2020/11/30 9:24:59编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/30 9:28:00 [只看该作者]

如果中文部分有问题,说明不是utf8,再试试其它编码呗
Dim s As String = FileSys.ReadAllText("D:\CS.txt", Encoding.GB2312)

ReadAllText(File, Encoding)

File:     要读取的文件的文件名和路径
Encoding: 可选参数,Encoding类型,可选的编码有:

Default
ASCII
BigEndianUnicode 
Unicode 
UTF32 
UTF7 
UTF8

Default表示系统编码,对于中文操作系统,通常是GB2312


 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2240 积分:18457 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2020/11/30 9:29:00 [只看该作者]

网上有人说可以用encoding.getencoding(“gb2312”),估计可以试试。直接用encoding.gb2312执行不了的
[此贴子已经被作者于2020/11/30 9:30:59编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/30 9:37:00 [只看该作者]

Dim s As String = FileSys.ReadAllText("D:\CS.txt", Encoding.GetEncoding("GB2312"))

 回到顶部