[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
在1楼的代码中,没有什么逻辑错误,是由不同字符集和编码,以及程序和系统之间交互编码不统一造成的,和老生常谈的“乱码”问题没有什么本质的区别。

在1楼第5行的“CreateShortcut()”函数在保存处理结果之前,肯定进行了从来源字符串编码(unicode编码)到操作系统默认编码(ANSI编码)的转换,
windows的简体中文版的默认ANSI编码为:GB2312或GBK或GB18030,把unicode编码字符 ・ 转换到ANSI编码会变为半角问号 ?
所以函数“CreateShortcut()”保存的结果与输入的原始字符串不一致,这样会造成路径改变的错误,而半角问号又会造成无法保存的错误。

到现在为止,字符集和编码遗留下来的多足鼎立的现象还没有得到很好的根治,
加之操作系统、应用程序、储存的文件,它们之间没有强制性的、统一的、唯一的“中转”字符集和编码,
编写应用程序稍有考虑不周,产生错误则不可避免,如很多杀毒软件对unicode编码字符“☀☁☂☃☄☎☏☐☑☒”文件夹下的病毒无可奈何。
盼望计算机世界的字符集和编码大统一早日到来!!!

2楼的曲线救国,6楼的inf,实际中都存在字符集和编码的问题,退就其次的解决办法就是(权宜之计):
把存储体中超出系统默认编码的路径、文件名中的字符替换成系统默认编码之内的字符,
或者不读取包含超出系统默认编码字符的路径、文件名,
或者直接使用系统功能手动创建快捷方式。

以上个人拙见,与坛友共勉。

TOP

回复 12# adan1


Windows Shell自己搞的东西还需自己收拾。
付出总有回报,问题总是没有办法多。
前进!前进!前进进!

TOP

返回列表