TC官方合作论坛

 找回密码
 立即注册
查看: 1987|回复: 4

[问题] 怎么读个txt文件全乱码,这么难吗

[复制链接]
发表于 2021-5-18 16:27:28 | 显示全部楼层 |阅读模式

马上加入TC

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

x
怎么读个txt文件全乱码,这么难吗
是哪出错了呀
变量 fd=文件读取内容("c:\\st\\ni.txt")
消息框(fd)

回复

使用道具 举报

发表于 2021-5-20 18:12:10 | 显示全部楼层
注意一下文件编码就行了
回复 支持 反对

使用道具 举报

发表于 2021-5-20 20:39:04 | 显示全部楼层
  1. function FileRead(path, type = 2)
  2.     sleep(1, false)
  3.     var Stream = com("ADODB.Stream")
  4.     Stream.Type = type//1-二进制,2-文本
  5.     Stream.charset("x-ansi")
  6.     Stream.Open
  7.     Stream.LoadFromFile(path)//读入文件
  8.     var TEXT_a = Stream.ReadText(2)
  9.     if(type == 2)
  10.         var encode = strgetat(TEXT_a, 0) & "|" & strgetat(TEXT_a, 1)
  11.         traceprint(encode)
  12.         var Codes = ""
  13.         select(encode)
  14.             case "97|100"
  15.             Codes = "UTF-8"  
  16.             case "230|168"
  17.             Codes = "UTF-8"  
  18.             case "239|187"
  19.             Codes = "UTF-8"  
  20.             case "228|189"
  21.             Codes = "UTF-8"
  22.         end
  23.         Stream.Close
  24.         Stream = null
  25.         var tmp = ""
  26.         if(Codes != "UTF-8")
  27.             return filereadex(path)
  28.         elseif(Codes == "UTF-8")
  29.             Stream.Type = 2    //2=文本
  30.             Stream.charset("UTF-8")
  31.             Stream.Open  //打开文件流
  32.             Stream.LoadFromFile(path)//读入文件
  33.             tmp = Stream.readtext
  34.             Stream.Close
  35.             Stream = null
  36.             return tmp
  37.         end
  38.     end
  39. end
复制代码

回复 支持 反对

使用道具 举报

发表于 2021-6-18 01:21:49 | 显示全部楼层
电脑可能是UTF-8编码无法识别
安卓可能是ANSI编码无法识别
改下文本编码格式保存再试试,以前遇到过.
回复 支持 反对

使用道具 举报

发表于 2021-6-18 15:22:08 来自手机 | 显示全部楼层
//【剑仙教程】编码类。加载任何编码的txt
var hThread, path
功能 执行()
var 路径 = 浏览框获取文本("浏览框0")
var 编码格式 = 识别txt编码格式(路径)
messagebox("编码格式:" & 编码格式)
var text = LoadUTF8(路径, 编码格式)
messagebox(text)
结束

本帖隐藏的内容
功能 识别txt编码格式(文件路径)
var Stream, Codes, TEXT_a, 编码ID
Stream = com("ADODB.Stream")//文件操作的对象
Stream.Type = 2    //1-二进制,2-文本
Stream.charset("x-ansi")
Stream.Open()  //打开文件流操作
Stream.LoadFromFile(文件路径)//读入文件
TEXT_a = Stream.ReadText(3)//获取文件2个字节文本
编码ID = 字符串返回字符(TEXT_a, 0) & "|" & 字符串返回字符(TEXT_a, 1) & "|" & 字符串返回字符(TEXT_a, 2)
traceprint(编码ID)

//按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息.
//所以,基本的原理就是只要读出文件前三个字节,判定这些字节的值,就可以得知其编码的格式。
select(编码ID)
  条件 "255|254|102"
  Codes = "Unicode"

  条件 "254|255|-1"
  Codes = "Unicode big endian"

  条件 "239|187|191"
  Codes = "UTF-8"

  默认
  Codes = "gb2312"//txt文件的ANSI编码
end
Stream.Close()
Stream = null
return Codes
结束

//参数2: 编码格式 选填以下4个之一:
//"gb2312" "Unicode" "Unicode big endian" "UTF-8"
功能 LoadUTF8(文件路径, 编码格式 = "UTF-8")
//下面是VBS代码.
//Dim oStream As ADODB.Stream
//Set oStream = New ADODB.Stream
//oStream.Open
//oStream.Charset = "UTF-8"
//oStream.LoadFromFile FileName
//LoadUTF8 = oStream.ReadText()
//oStream.Close

//翻译为tc代码.
var oStream = com("ADODB.Stream")
oStream.Open()
oStream.Charset = 编码格式
oStream.LoadFromFile(文件路径)//把txt文件载入oStream对象.
var text = oStream.ReadText()//tc的字符串,采用Unicode编码格式.
//把txt文件,转为Unicode编码格式,并储存到text变量.
oStream.Close()
return text
结束



功能 启动_热键()
var bool = 线程获取状态(hThread)
if(bool == 0)
  hThread = 线程开启("执行", "")
end
结束
功能 终止_热键()
线程关闭(hThread)
结束

功能 加载任何编码的txt_初始化()
path = 系统获取进程路径()
path = path & "data\\config.ini"
var 路径 = 文件读配置("小节名", "浏览框0", path)
浏览框设置文本("浏览框0", 路径)
结束
功能 加载任何编码的txt_销毁()
var 路径 = 浏览框获取文本("浏览框0")
文件写配置("小节名", "浏览框0", 路径, path)
结束
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-3-30 07:27 , Processed in 0.037873 second(s), 28 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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