找回密码
 加入
搜索
楼主: 131738

[原创] 更新 AutoIt v3.3.14.5 (2) 中文安装包

 火...   [复制链接]
 楼主| 发表于 2015-9-26 21:49:52 | 显示全部楼层
“总之保持和源一样,应该是最合理的。ANSI就ANSI,UTF就UTF,有BOM就有,没有就没有”—— 其实 ...
afan 发表于 2015-9-26 21:16


1. 我已修改工具脚本相关代码到合并为 ANSI 编码, 不然不会有现在的文档上传了.

2. 前面有个我回复的帖子说到我已经将  AutoIt3Wrapper 中 FileOpen($ScriptFile_In, 2 + $SrceUnicodeFlag) 修改为 FileOpen($ScriptFile_In, 2 + 512) 了. 1 楼还追加上传了修改版的 AutoIt3Wrapper.exe
     源变量 $SrceUnicodeFlag 是检测当前文件编码的返回值, 该变量符合你 "ANSI就ANSI,UTF就UTF,有BOM就有,没有就没有 " 的概念.

上贴回复的意思只是想说明要汉化 AUtoIt , 就目前的状态, 不修改为 ANSI 编码, 汉化后的 AutoIt 很难适应中文环境, 因此不能遵循你的 "保持和源一样,应该是最合理的" 概念, 没有其他意思, 不要误会啊!
毕竟汉化的 AutoIt 针对的是不懂英文的初学者(高手可能就直接使用英文原版了), 不修改为 ANSI 编码, 一旦出现乱码, 初学者可能会无法应对, 从而失去继续学习的信心了.
发表于 2015-9-26 21:16:57 | 显示全部楼层
这个结论只能对纯英文脚本有效, 要是这样的话, 汉化就没有意义!

7 月 10 号 3.3.14.0 开始, 接着 3. ...
131738 发表于 2015-9-26 11:30



    “总之保持和源一样,应该是最合理的。ANSI就ANSI,UTF就UTF,有BOM就有,没有就没有”—— 其实我指的只是针对前辈之前提到的我的AuMFC程序的处理意见…

既然讨论开了,那就继续接着~

乱码似乎牵涉到2个问题:

1,帮助 .chm 文档的汉化
   这其中就包含了.htm 文件的汉化,以及例子 .au3 文档的汉化
   而乱码的原因是用官方工具脚本合并成UTF8造成的,如果可能的话,是否将其保存为ANSI试试?

2,SciTE编辑器中的乱码
   在SciTE中直接保存,虽说不知什么原因会在含中文字符时会转码为ANSI,但并没有乱码的现象
   而乱码主要是由于“选项编译”调用 AutoIt3Wrapper 而导致的,因此,估计修改AutoIt3Wrapper 相关代码就解决了。
 楼主| 发表于 2015-9-26 11:30:20 | 显示全部楼层
总之保持和源一样,应该是最合理的。ANSI就ANSI,UTF就UTF,有BOM就有,没有就没有
afan 发表于 2015-9-25 19:49


这个结论只能对纯英文脚本有效, 要是这样的话, 汉化就没有意义!

7 月 10 号 3.3.14.0 开始, 接着 3.3.15.0, 3.3.14.1, 到 3.3.14.2, 汇编后的文档, 窗口左侧目录, 索引窗格的中文全是乱码.
研读官方的文档生成工具脚本(就因为这个反反复复了 2 个多月)发现:

1 个帮助文档的资源除 .htm 文件之外, 还有 1 个 方案文件, 1 个目录文件, 1 个索引文件(暂且称其为 1 套文件吧).
现在的 AUtoIt.chm 看起来是 1 套文件, 实际生成之前是 2 套(内置和 UDF)文件.
工具脚本在生成文档之前, 先将 2 套文件的目录, 索引文件合并为一套目录, 索引文件, 乱码问题就因为这个合并处理.
研读这个合并处理的脚本代码, 原来是合并为 UTF8 文件了,记事本打开合并后的文件,显示完全正常!

现在可以确定乱码只能是文档汇编程序 HTML Help Workshop(这是官方工具脚本指定的汇编程序)造成的了.
这个汇编程序一直使用国内的汉化版, 为了确定是否真的是这个原因, 特意到微软下载了英文原版的测试, 结果还是乱码!(什么原因我是弄不明白的).

官方工具脚本不是一成不变的, 3.3.14.0 开始的工具脚本是更新了的最新版工具脚本.
回头又去看 3.3.12.0 版工具脚本的合并结果,却是 ANSI 的!

按你"保持和源一样"的说法, 合并后的乱码文档就没有任何意义了....

另外, 前面已有两位网友反馈, 通过"选项编译"窗口添加编译指令后, AutoIt3Wrapper 将源脚本处理为 UTF8, 使源脚本中文乱码(我也测试过了)...
为此, 使用英文原版 AutoIt3Wrapper.au3 作以下测试:

1. 右键"新建 au3 脚本",
2. 检测编码为 256 -->> UTF8 (无 BOM).
3. SciTE 打开脚本, 添加一句 MsgBox(0,0,'123'), 运行后关闭脚本
4. 再检测编码还是 256 -->> UTF8 (无 BOM).
5. 打开 "选项编译" 窗口, 向这个脚本添加有中文的编译指令 "测试.exe", 保存到脚本后退出"选项编译"窗口
        结果编译指令中 " 测试.exe " 的 "测试" 显示乱码, 运行正常后关闭脚本
6. 检测编码还是 256 -->> UTF8 (无 BOM).
7. 再打开这个脚本, 修改上面添加的代码为 MsgBox(0,0,'再见'), 运行后关闭脚本
8. 再次检测编码, 奇迹了, 变为 512 -->> ANSI !!! (一直不明白什么原因)

再重新做同样的测试:
1. 右键"新建 au3 脚本",
2. 检测编码为 256 -->> UTF8 (无 BOM).
3. SciTE 打开脚本, 添加一句 MsgBox(0,0,'2 次测试'), 中文显示正常, 运行后关闭脚本
4. 再次检测编码, 又奇迹了, 变为 512 -->> ANSI !!!
5. 打开 "选项编译" 窗口, 向这个脚本添加有中文的编译指令 "2 次测试.exe", 保存到脚本后退出"选项编译"窗口
6. 此时脚本所有中文全部乱码!!! 但运行正常!!!

从以上测试看来, 要保持和源一样, 编写脚本就不能使用中文了...

以上说法供参考...
发表于 2015-9-25 22:44:13 | 显示全部楼层
回复 3475# 131738

这个问题就是编码不一致问题,看看有没有办法 让输出consol 也用UTF-8输出就行了
发表于 2015-9-25 22:38:25 | 显示全部楼层
回复 3473# 131738


    好的,我先看看上一版本行不行.....
发表于 2015-9-25 22:35:52 | 显示全部楼层
回复 3473# 131738

这个版本不行呀,我用的是ACN的,可以
local $Array[]
但现在这些新版的不行呀
发表于 2015-9-25 19:49:45 | 显示全部楼层
我不懂编码, 就目前的测试, UTF-8 无 BOM 的编码没有显示乱码的(除非该脚本有外部写入修改的中文字符), ...
131738 发表于 2015-9-25 19:05



    总之保持和源一样,应该是最合理的。ANSI就ANSI,UTF就UTF,有BOM就有,没有就没有
 楼主| 发表于 2015-9-25 19:05:15 | 显示全部楼层
本帖最后由 131738 于 2015-9-25 19:06 编辑
这个判断还是必须的,不能都保存为ANSI格式,如果包含U码字符,保存到ANSI就会丢失,变为“?”, ...
afan 发表于 2015-9-25 18:59


我不懂编码, 就目前的测试, UTF-8 无 BOM 的编码没有显示乱码的(除非该脚本有外部写入修改的中文字符), 但 128 及以下极有可能可能会出现中文乱码....
发表于 2015-9-25 18:59:05 | 显示全部楼层
难怪有的脚本没事, 有的脚本又有问题, 闹的我头昏脑胀....
原来是 3.3.14.0 之前没有暴露出这个问题. ...
131738 发表于 2015-9-25 16:16



    这个判断还是必须的,不能都保存为ANSI格式,如果包含U码字符,保存到ANSI就会丢失,变为“?”,可能的话就再加个判断,无BOM的仍旧以无BOM的格式保存,也就是说保持原格式不变。
 楼主| 发表于 2015-9-25 17:43:03 | 显示全部楼层
本帖最后由 131738 于 2015-9-25 17:50 编辑
回复  131738

@131738
Local $mInternal[] ; 声明一个映射
$mInternal["Internal"] = "AutoIt3" ; 指 ...
hansans 发表于 2015-9-25 17:14


这个我不懂, Beta 版的 AutoIt 有几个关于 Map(我汉化为映射) 的函数, 不知与你说的是否一回事.
如果是的, 则 3.3.14.X 系列 AutoIt 取消了这几个函数, 因为这几个函数还是测试类型,
但已发布包含这几个函数的 3.3.15.0 版 !
你可以在英文原版的 3.3.14.x 试试你这段代码, 可能也不行的....

1 楼有 AutoIt_v3.3.12.0 & 3.3.13.20_JT-FT_Setup 安装包, 这个中的 3.3.13.20 包含这几个函数

说明一下, 我只是汉化, 内部运行机制我是无法接触到的, 因此抱歉, 回答不了你.
发表于 2015-9-25 17:14:27 | 显示全部楼层
回复 1# 131738

@131738
Local $mInternal[] ; 声明一个映射
$mInternal["Internal"] = "AutoIt3" ; 指定一个元素
Local $mContainer[] ; 声明一个映射容器
$mContainer.Bin = $mInternal ; 指定第一映射为元素
; 所有这些都返回 "AutoIt3"
$sString = $mContainer["Bin"]["Internal"]
$sString = $mContainer.Bin.Internal
$sString = $mContainer["Bin"].Internal
$sString = $mContainer.Bin["Internal"]

(1) : ==> 数组索引变量格式错误.:
Local $mInternal[]
Local $mInternal[^ ERROR

为什么不行了.........................
发表于 2015-9-25 16:58:42 | 显示全部楼层
谢谢分享!!!!!!!!!!!
发表于 2015-9-25 16:46:01 | 显示全部楼层
现在的手册,找函数很费劲
发表于 2015-9-25 16:45:36 | 显示全部楼层
那儿有中英文的手册,或者是 中文手册中标题带有函数名的
 楼主| 发表于 2015-9-25 16:16:14 | 显示全部楼层
记得我的工具好像会做一次判断,如果源是ANSI就用ANSI保存,如果是UTF则会使用UTF8保存,回头再看 ...
afan 发表于 2015-9-25 15:28


难怪有的脚本没事, 有的脚本又有问题, 闹的我头昏脑胀....
原来是 3.3.14.0 之前没有暴露出这个问题....呵呵....
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2025-2-26 07:22 , Processed in 0.076253 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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