[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] PowerShell脚本运行时中文乱码问题

  1. $tests=@(
  2. 'test1-测试一',
  3. 'test1-测试一',
  4. 'test1-测试一'
  5. )
  6. $tests
  7. pause
复制代码
脚本保存为UTF-8编码,chcp 936、65001都试了不能正确显示中文部分,在控制台可以正常显示中文部分。想请问各位老师在不考虑脚本保存编码改变的前提下,该如何修改才可以使其返回值正常显示中文部分?

本帖最后由 Five66 于 2024-6-4 21:28 编辑

windows的编码很乱的
系统本身就分ansi和unicode , 而程序又分无bom utf8和有bom utf8

自带的powershell默认用的是ansi (简体中文环境gbk), 内部是unicode , 只认识有bom的ut8 , 但是cmd代码页65001却是以无bom的utf8工作的

建议代码全弄成ascii字符 , 中文换成转义序列

TOP

回复 5# lonron

不需要新版,主要是 ms 白痴多,随便用 bom 就行
网上的方法,改注册表的方法也没试过,只试过命令的方式。
https://learn.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_character_encoding?view=powershell-7.4

TOP

回复 4# newswan


    意思是更新到pwsh最新版?如果非要改保存编码的话,ANSI和UTF-8 BOM哪个容错会好点?(原脚本只会在中文系统环境但涉及多人不同设备场景下使用)

TOP

回复 3# lonron

网上的方法好像都无效
这个方法没试过
Beta 版: 使用 Unicode UTF-8 提供全球语言支持

TOP

回复 2# newswan


    是的,但是有没有不改变默认保存编码的情况下,单纯在代码中定义的方式?就像批处理在脚本开头写上chcp 65001就很好的解决这个问题了。

TOP

带 bom 就没问题

TOP

返回列表