Board logo

标题: [问题求助] PowerShell脚本运行时中文乱码问题 [打印本页]

作者: lonron    时间: 2024-6-4 10:02     标题: PowerShell脚本运行时中文乱码问题

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

带 bom 就没问题
作者: lonron    时间: 2024-6-4 10:25

回复 2# newswan


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

回复 3# lonron

网上的方法好像都无效
这个方法没试过
Beta 版: 使用 Unicode UTF-8 提供全球语言支持
作者: lonron    时间: 2024-6-4 11:32

回复 4# newswan


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

回复 5# lonron

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

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

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

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

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




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