PowerShell中文件加载报错‘文件非UTF-8编码’问题求助
问题原因
PowerShell里的echo命令(本质是Write-Output的别名)执行>>追加操作时,默认使用**UTF-16 LE(Unicode)**编码写入内容,但你在JupyterLab中手动创建文件时用的是UTF-8编码,两种编码混合后,文件不再是纯UTF-8格式,导致JupyterLab无法识别加载;而Get-Content会自动检测文件编码,所以能正常读取内容。
解决办法
1. 追加内容时指定UTF-8编码
放弃echo >>的用法,改用支持指定编码的命令:
- 使用
Add-Content:Add-Content -Path "test.txt" -Value "abc" -Encoding UTF8 - 或者用管道配合
Out-File:"abc" | Out-File -Path "test.txt" -Append -Encoding UTF8
2. 修复已损坏编码的文件
对已经出现编码问题的文件,重新转为纯UTF-8:
Get-Content "test.txt" | Out-File -Path "test.txt" -Encoding UTF8
执行后JupyterLab即可正常打开该文件。
3. 永久设置PowerShell默认输出编码为UTF-8
让后续所有输出/追加操作默认使用UTF-8:
- 检查是否存在PowerShell配置文件:
Test-Path $PROFILE - 如果返回
False,创建配置文件:New-Item -Path $PROFILE -ItemType File -Force - 打开配置文件,添加以下内容并保存:
$PSDefaultParameterValues['Out-File:Encoding'] = 'UTF8' $PSDefaultParameterValues['Add-Content:Encoding'] = 'UTF8' - 重启PowerShell后设置生效。
内容的提问来源于stack exchange,提问作者Chau
相关产品推荐
相关产品推荐

