忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 徽章 文库 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 881 | 回复: 2

[学习共享] ps第10课:世界上最好的脚本编码处理技术 [复制链接]

论坛徽章:
0
发表于 2017-12-15 14:18 |显示全部楼层
本帖最后由 本友会机友会摄友会 于 2017-12-15 14:40 编辑

论点=powershell中有,世界上最好的脚本编码处理技术

分论点1=powershell脚本中,可以使用中文脚本名,中文变量名,中文函数名,中文参数。

各种中文注释,
单行用# ,
大段注释用 <#   这里放n行注释      #>

论据:
-----------------------------------------------
function 函数名哈罗($函数参数)
{ $变量名1 = "哈罗"
$变量名2 = $变量名1 + $函数参数
write-host $变量名2
}
函数名哈罗  "世界"
----------------------------------------------
请把上述代码存为   ansi格式的        h哈罗世界.ps1     
在powershell中敲一下【h】,再敲 【tab键】 运行之。
win7+powershell2.0运行通过。能够正常运行,结果正常,英文win中运行,都无任何问题。再说一遍,毫无问题!!!!!!


分论点2=powershell脚本扩展名为.ps1,ps1脚本编码任意,都能被powershell.exe正确解码,并且不用在脚本中声明code编码之类,比bat强,python容易。

论据:
把上述  h哈罗世界.ps1 【用记事本】打开,另存为utf-8,unicode格式,各一份。
在powershell中用h + tab键 运行之。
win7+powershell2.0运行通过。能够正常运行,结果正常,英文win中运行,都无任何问题。再说一遍,毫无问题!!!!!!

当然为了国际通用,国际统一。建议把ps1脚本,存成utf-8+bom头,或者unicode+bom头编码。不建议用ansi编码保存。

分论点3=powershell命令中,对编码处理的很好。

论据:
1 在其他编码文档中查字符串,findstr不行,linux的grep不行,但select-string行。select-string中有 -Encoding 参数,具体看手册。
2 常用的编码命令有 Get-Content a.txt -Encoding xxx,    out-file a.txt -Encoding   xxx。
要想知道哪些命令支持-Encoding这个参数,可以在手册中搜Encoding,也可以用命令 get-command * -ParameterName "encoding"
注意,此命令不适合于外置模块,要对外置模块,请指定模块名,或者先导入模块。
(Get-Module -ListAvailable).name |ForEach-Object { get-command * -ParameterName "encoding" -module $_}

分论点4=编码转换无忧
论据:
1 你想转换编码么?可以用 。net类system.text.encoding来搞
http://msdn.microsoft.com/zh-cn/library/system.text.encoding.aspx

2 有第三方模块。

分论点5=浅谈powershell对【文本编码格式】的判断流程=补充知识点

论据:
powershell对纯文本的处理,是由Get-Content , out-file等这几个命令来完成的。这里我以Get-Content为例,说明powershell是怎么判断文本编码的。
当你输入Get-Content a.txt 命令时,powershell就知道你想打开a.txt这个文本。
那么,它用什么编码帮我们打开文件呢?

1 powershell首先看我们是否指定了-Encoding参数。如果我们指定了参数,就根据参数处理。如Get-Content a.txt -Encoding utf8。而如果没有指定-Encoding参数,powershell就自己判断。

2 判断是否有utf8的bom头,有就按utf8处理。判断是否有unicode的bom头,有就按unicode处理。判断其他头等等。如果已知头都没有,则按ansi处理。

3
支持下列编码:
有效值是“Unicode”、“UTF7”、“UTF8”、“UTF32”、“ASCII”、“BigEndianUnicode”、“Default”和“OEM”。默认值为“Unicode”。
“Default”使用系统当前 ANSI 代码页的编码。
“OEM”使用操作系统的当前原始设备制造商代码页标识符。

结论:

win发明了bom头,用于帮助【自动】识别ps1,txt等文本编码。如果没有bom头,则应该用【命令 -encoding 编码类型】来手动指定。
如果有带有bom头的utf8格式文档,如果有带有bom头的unicode格式文档,ansi格式文档,powershell都能自动识别+正确打开。
如果有不带bom头的utf8格式文档,需要指定编码utf8;如果有不带bom头的unicode格式文档,需要指定unicode。
建议用带有bom头的utf8,或者unicode文档格式保存你的数据。   
--- 人家发明了bom头,就是让你用的,你一用,98%以上的软件都很容易判断你这文件的编码。这也是趋势。
--- 而不能处理bom头的那2%工具都太老了,不方便了,应该找个坟墓把它们埋了。

QQ截图20171215143735.png

论坛徽章:
0
发表于 2017-12-15 14:55 |显示全部楼层
回复 1# 本友会机友会摄友会

有一种耳目一新的感觉

论坛徽章:
1
黑曼巴
日期:2016-08-17 14:00:26
发表于 2017-12-18 14:42 |显示全部楼层
很好很强大……然而
您需要登录后才可以回帖 登录 | 注册

本版积分规则

DTCC2018购票6.8折优惠进行时

中国数据库技术大会是国内数据库及大数据领域规模最大、最受欢迎的技术交流盛会。 2018年5月10-12日,第九届中国数据库技术大会将如约而至。本届大会以“数领先机•智赢未来”为主题,设定2大主会场及20个技术专场,邀请来自国内外互联网、金融、教育等行业百余位技术专家,共同探讨Oracle、MySQL、NoSQL、大数据等领域的前瞻性热点话题与技术。
----------------------------------------
优惠时间:2018年2月13日前

报名链接>>
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP