以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]Encoding.Default在不同的电脑上显示不同  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=158691)

--  作者:chnfo
--  发布时间:2020/11/29 11:02:00
--  [求助]Encoding.Default在不同的电脑上显示不同
发现一个奇怪的现象

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编辑过]

--  作者:有点蓝
--  发布时间:2020/11/29 21:01:00
--  
那就指定编码:Dim s As String = FileSys.ReadAllText("D:\\CS.txt", Encoding.UTF8)
--  作者:chnfo
--  发布时间:2020/11/30 9:06:00
--  
我是说本来txt里的文本正常的,但是A电脑是win7,必须用default才能读出来显示正常;但同一个文件,在B电脑上win10加了default不正常,去掉反而正常了。 这样不行啊,同一个txt配置文件,用来做系统打开前的内容校验,不是闹笑话了?A电脑可以,B电脑不行?
--  作者:有点蓝
--  发布时间:2020/11/30 9:08:00
--  
Encoding.Default不是不确定的,根据不同系统,选择的不同编码方式会有不同。但是文件的编码是固定的,直接指定编码即可
--  作者:chnfo
--  发布时间:2020/11/30 9:24:00
--  
现在两台电脑在面前,一台win7中文版,一台win10中文版。同一个狗、同一个文本文件(文件名、内容完全一致,里面有中文)。执行readalltext(路径,encoding.default),一个显示乱码,一个正常;如果去掉default,就正好反过来。如果改成utf8,两个除了中文部分,其它正常。网上度了一下,说是不同系统可能字库不同,这不要命了?
[此贴子已经被作者于2020/11/30 9:24:59编辑过]

--  作者:有点蓝
--  发布时间: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
--  发布时间:2020/11/30 9:29:00
--  
网上有人说可以用encoding.getencoding(“gb2312”),估计可以试试。直接用encoding.gb2312执行不了的
[此贴子已经被作者于2020/11/30 9:30:59编辑过]

--  作者:有点蓝
--  发布时间:2020/11/30 9:37:00
--  
Dim s As String = FileSys.ReadAllText("D:\\CS.txt", Encoding.GetEncoding("GB2312"))