标题: [问题求助] PowerShell的Get-Content获取文本时怎样确保不乱码? [打印本页]
作者: 小白龙 时间: 2023-12-10 05:46 标题: PowerShell的Get-Content获取文本时怎样确保不乱码?
下面的代码, 在a.txt文件的编码是utf8时, 能执行成功, 但如果是别的编码时, 读到变量中是乱码, 有没有最简单直接有效的方法让变量$textContent中的文本不乱码?
坛里也搜索到一些办法, 但感觉有点复杂, 求路过大佬指教, 谢谢- $textContent = Get-Content -Path "$home\desktop\a.txt" -enc utf8
复制代码
作者: wanghan519 时间: 2023-12-10 06:09
作者: 小白龙 时间: 2023-12-10 06:21
回复 2# wanghan519
我的是ps5 ,执行后报错如下
PS C:\Users\Administrator> gc -enc
Get-Content : 缺少参数“Encoding”的某个参数。请指定一个类型为“Microsoft.PowerShell.Commands.FileSystemCmdletProviderE
ncoding”的参数,然后再试一次。
所在位置 行:1 字符: 4
+ gc -enc
+ ~~~~
+ CategoryInfo : InvalidArgument: ( [Get-Content],ParameterBindingException
+ FullyQualifiedErrorId : MissingArgument,Microsoft.PowerShell.Commands.GetContentCommand
PS C:\Users\Administrator>
作者: 小白龙 时间: 2023-12-10 06:25
回复 2# wanghan519
有没有哪个exe的小软件,最好几百K,不要太大了, 能通过命令行显示指定文件的编码, 这样就好多了, 我在我的代码前, 加上判断编码的代码
作者: wanghan519 时间: 2023-12-10 06:27
回复 4# 小白龙
file命令,或者各种语言里的库比如go里用chardet
作者: wanghan519 时间: 2023-12-10 06:29
回复 4# 小白龙
powershell也有库
Install-Module -Name EncodingAnalyzer
作者: 小白龙 时间: 2023-12-10 06:57
回复 6# wanghan519
感谢推荐,
我找到了下面链接的小工具, 很不错, 但是编码叫法不同, 还得处理一下
http://www.bathome.net/redirect. ... 7518&pid=276615
作者: 小白龙 时间: 2023-12-10 06:58
回复 5# wanghan519
file命令 怎么用?
作者: wanghan519 时间: 2023-12-10 07:33
本帖最后由 wanghan519 于 2023-12-10 07:40 编辑
回复 8# 小白龙
file需要linux环境,也有打包成exe的,使用如图
作者: 小白龙 时间: 2023-12-10 07:44
回复 9# wanghan519
有点复杂, 感觉还是went大佬的code更小巧就是编码叫法不一样, 在PS中还得修改
作者: wanghan519 时间: 2023-12-10 07:55
回复 10# 小白龙
呃,图中也不算复杂吧,第一句创建utf8编码的文件a.txt
2. 用iconv转utf8到gbk存成b.txt,这里各种编码随便转,也可以改成用.net那套东西
3. 4. 检测文件编码,用file
5. 6. 检测文件编码,用powershell
如有需要,也可以问一下ai,让他用go写个检测编码并转换的exe,一般是用chardet,写出来的基本直接可以编译成exe用
大佬写的也好用,怎么方便怎么来吧。。。
作者: Five66 时间: 2023-12-11 00:15
回复 7# 小白龙
可以自己弄个编码名字对照表,例如- $the=@{'ANSI'='Default';'UTF-8'='UTF8';'UTF-8_BOM'='UTF8';'UTF-16_BE'='BigEndianUnicode';'UTF-16_LE'='Unicode';}
- $enc = & "coder.exe" -s -a gc -f "0.txt"
- $textContent = Get-Content -Path "$home\desktop\a.txt" -enc ($the[$enc])
复制代码
作者: 小白龙 时间: 2023-12-11 18:15
回复 12# Five66
感谢楼上大佬, 要是能改源码就好了, 或者在源码中加个 -ps 参数, 输出就是ps的编码名
作者: Five66 时间: 2023-12-12 00:06
回复 13# 小白龙
那大概是win32汇编的程序,不知道工具链用的masn还是什么的,而且源码coder.asm里的include的那些My开头的asm也没给出来,不知道是工具链自带的还是真的是自定义的,估计只能让原作者来修改了
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |