剪切板的数据,如何保存为ANSI编码?【已解决】
本帖最后由 fenhanxue 于 2017-9-19 21:26 编辑之前一直用的汉化版是论坛右上角(下载)的版本(版本连接:http://autoitx.com/thread-12964-1-1.html)
au3的版本较早:3.3.9.21
最近下了论坛里比较新的汉化版,版本连接:http://www.autoitx.com/thread-19307-1-1.html
版本号:2016-04-25 3.3.14.2 第 4 版
两者之间在中文支持这一块差别好大,好多我原先写的代码在中文支持上出现了各种乱码问题,查询了论坛多篇帖子,问题的关键可能就在UT8-8 和 ANSI这里
但尚未头绪清晰,目前遇到如下问题,望有前辈指点:
Local $temp_file = @ScriptDir & '\1.txt'
Local $a = ClipGet()
; $a = StringToBinary($a,1)
; $a = BinaryToString($a,4)
Local $file = FileOpen($temp_file,2+512)
FileWrite($file,$a)
FileClose($file)
Sleep(1000)
$a = FileGetEncoding($temp_file)
MsgBox(0,'为什么出现的是256,不是512',$a)
即剪切板的数据,我相同保存为ANSI的
但是上述代码实测结果为保存为UT8-8
2017年9月16日更新:
今天实测发现,如果剪切板里的内容,包含中文字体,则保存结果为ANSI
如果剪切板的内容,不含中文,则保存结果为UT8-8
如图:
20170919更新:
问题悬而未决,基于14版 ANSI和UTF8编码混乱,楼主不得已,弃坑重新用回3.3.9.21。。。
版本问题吧 本帖最后由 tubaba 于 2017-9-15 14:53 编辑
测试了一下,情况跟二楼一样,应该是版本关系? 发现个更奇怪的问题:
昨天发帖提问的时候,上述代码(1楼代码)运行多次,第16行msgbox的运行结果都是256
而就在刚刚,又运行了1次上述代码(1楼代码),显示的结果又变成了512
程序版本为论坛里的汉化版:3.3.14.2 第 4 版
下载地址:http://www.autoitx.com/thread-19307-1-1.html 现在又变成256了 本帖最后由 fenhanxue 于 2017-9-16 10:29 编辑
哈哈 我3.3.12.0版本 竟然获取不到,返回了0
AU3Check (3.3.12.0) 回复 6# fenhanxue
帮助文件:
FileOpen
打开文件以供读取或写入.
FileOpen("文件名"[, 模式 = 0])
文件名 要打开文件的文件名.
模式 [可选] 文件打开模式.
可以是以下值的组合:
$FO_READ (0) = 只读模式(默认)
$FO_APPEND (1) = 写入模式(追加数据到文件尾部)
$FO_OVERWRITE (2) = 写入模式(删除之前的内容)
$FO_CREATEPATH (8) = 如果目标目录不存在就创建(见备注).
$FO_BINARY (16) = 强制二进制模式(见备注).
$FO_UNICODE 或 $FO_UTF16_LE (32) = 使用 Unicode UTF16 小编码读写模式.
$FO_UTF16_BE (64) = 使用 Unicode UTF16 大编码读写模式.
$FO_UTF8 (128) = 使用 Unicode UTF8 (带 BOM)读写模式.
$FO_UTF8_NOBOM (256) = 使用 Unicode UTF8 (无 BOM)读写模式.
$FO_ANSI (512) = 使用 ANSI 读写模式.
$FO_UTF16_LE_NOBOM (1024) = 使用 Unicode UTF16 (无 BOM) 小编码读写模式.
$FO_UTF16_BE_NOBOM (2048) = 使用 Unicode UTF16 (无 BOM) 大编码读写模式.
$FO_FULLFILE_DETECT (16384) = 读取没有 BOM 的打开文件时, 完整检测文件确定它是否为 UTF8 或 UTF16 编码.
如果不使用这一模式, 则因性能方面原因只会检测文件初始部分(最多 64 KB).
文件夹路径必须存在(除非指定模式 $FO_CREATEPATH (8) - 见备注).
常量定义文件: FileConstants.au3
页:
[1]