Board logo

标题: [问题求助] PowerShell怎样把乱码转为GBK编码? [打印本页]

作者: 小白龙    时间: 2022-8-27 10:37     标题: PowerShell怎样把乱码转为GBK编码?

使用某个命令输出的字符为乱码
  1. ϵͳՒ򻵽ָ��·�
复制代码
但是输出为文本文件没有乱码, 查看文本文件编码是GBK, 想直接把乱码在命令行输出中显示, 找了下面的代码, 但是输出全是数字, 请路过大佬帮忙, 谢谢


[Text.Encoding]::GetEncoding("GBK").GetBytes([Text.Encoding]::UTF8.GetBytes("ϵͳՒ򻵽ָ��·�"))
作者: hlzj88    时间: 2022-8-27 10:47

http://bcn.bathome.net/s/tool/index.html?down&key=iconv

例子
iconv -c -f utf-8 -t gbk "test.html" > test.ini
作者: 小白龙    时间: 2022-8-27 12:41

回复 2# hlzj88


    感谢大佬, 要是在powershell内解决就更好了
作者: flashercs    时间: 2022-8-27 14:37

这样也是乱码:
  1. [Text.Encoding]::GetEncoding("GBK").GetString([Text.Encoding]::UTF8.GetBytes("ϵͳՒ򻵽ָ��·�"))
复制代码
尝试先修改powershell编码后再运行命令:
  1. $outputencoding=[console]::OutputEncoding=[console]::InputEncoding=[system.text.encoding]::GetEncoding('gb2312')
复制代码
或者
  1. $outputencoding=[console]::OutputEncoding=[console]::InputEncoding=[system.text.encoding]::UTF8
复制代码

作者: 小白龙    时间: 2022-8-27 16:10

本帖最后由 小白龙 于 2022-8-27 16:23 编辑

回复 4# flashercs

修改PS编码后运行直接报错

Exception setting "InputEncoding": "句柄无效。
"
At line:1 char:19
+ ... tencoding = [console]::OutputEncoding = [console]::InputEncoding = [s ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: ( [], SetValueInvocationException
    + FullyQualifiedErrorId : ExceptionWhenSetting
作者: 小白龙    时间: 2022-8-27 16:14

本帖最后由 小白龙 于 2022-8-27 16:15 编辑

回复 4# flashercs


   

[Text.Encoding]::GetEncoding("GBK").GetString([Text.Encoding]::UTF8.GetBytes($err))

[Text.Encoding]::GetEncoding("GB2312").GetString([Text.Encoding]::UTF8.GetBytes($err))
得到
系统諕蚧到指锟斤拷路顨氾拷
实际应该是
系统找不到指定的路径。
作者: flashercs    时间: 2022-8-27 16:34

  1. $OutputEncoding = [System.Text.Encoding]::UTF8
  2. [console]::OutputEncoding = $OutputEncoding
  3. [console]::InputEncoding = $OutputEncoding
复制代码

作者: 小白龙    时间: 2022-8-27 16:42

回复 7# flashercs


    怪了, powershell ise 还是一样的提示

Exception setting "OutputEncoding": "句柄无效。
"
作者: flashercs    时间: 2022-8-27 17:04

本帖最后由 flashercs 于 2022-8-27 17:05 编辑

回复 8# 小白龙


    你说的是powershell,不是 powershell_ise;
搞清楚这两个host 是不同的;
提问题先说清楚 ps版本; host版本.
作者: 小白龙    时间: 2022-8-27 17:14

回复 9# flashercs


    哦, 感谢大佬提醒,
我一直使用powershell ise 5.1
作者: 小白龙    时间: 2022-8-30 07:31

感觉是不是还有什么编码接近gb2312?  现在只有几个字是乱码了

系统諕蚧到指锟斤拷路顨氾拷
系统找不到指定的路径。
作者: flashercs    时间: 2022-8-30 08:54

回复 11# 小白龙
  1. [System.Text.Encoding]::GetEncoding('big5')
复制代码

作者: 小白龙    时间: 2022-8-30 11:26

多谢大佬, 试了一下, 还是不行, 真是怪了, 先不搞它了
作者: cui26896    时间: 2022-9-12 14:23

曾在VB ADO SQliet 表查询中遇到过类似的乱码,也是至今找不到解决的办法。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2