PowerShell输出adb日志文件编码异常,如何解决?
解决PowerShell执行adb logcat输出日志内容异常的问题
问题原因
adb在Windows环境下默认输出编码是UTF-16LE,而PowerShell的重定向操作(>)虽然默认用UTF-8,但在处理外部命令输出时会额外做编码转换,导致日志内容乱码或异常。Git Bash/MobaXterm这类终端直接处理adb的原生输出,没有中间转换,所以能得到正确结果。
可行解决方案
方案1:用Out-File指定UTF-16LE编码输出
替换原重定向命令,直接指定输出编码匹配adb的原生编码:adb logcat WeatherActivity:D *:S | Out-File -FilePath weather.log -Encoding Unicode这里
Unicode对应Windows的UTF-16LE编码,完美匹配adb输出。方案2:临时修改PowerShell的控制台输出编码
先将PowerShell的控制台输出编码设为adb的UTF-16,再执行日志导出:[Console]::OutputEncoding = [System.Text.Encoding]::Unicode adb logcat WeatherActivity:D *:S > weather.log执行完后如果需要恢复默认编码,可执行
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8。方案3:通过cmd.exe执行绕开PowerShell的编码转换
直接调用cmd来执行日志导出命令,利用cmd的原生重定向逻辑:cmd /c "adb logcat WeatherActivity:D *:S > weather.log"
内容的提问来源于stack exchange,提问作者Yatung Yü
相关产品推荐
相关产品推荐

