找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 9972|回复: 2

[问题求助] [已解决]Powershell关于文本输出的编码乱码的问题

[复制链接]
发表于 2021-4-26 01:14:19 | 显示全部楼层 |阅读模式
本帖最后由 wxyz0001 于 2021-4-26 12:58 编辑
  1. $thePath="E:\news"
  2. $Patterns=Get-ChildItem $thePath -Filter "*.html"|Select-String -Pattern "<title>"|select Path,Filename,LineNumber,Line
  3. foreach($Pattern in $Patterns){
  4.     ('{0} : {1} : {2}' -f ($Pattern.Path),($Pattern.LineNumber),($Pattern.Line.Replace("(dzwzzz.com)","")))|Add-Content "output.txt"}
复制代码
▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃
在win10下用记事本打开html文件是ANSI编码,执行代码后,打开输出后的txt文本也是ANSI编码,但是是乱码:
  1. E:\news\1.html : 4 : <title>????ε????? - ??????????</title>
  2. E:\news\2.html : 4 : <title>???????????? - ??????????</title>
  3. E:\news\3.html : 4 : <title>?????????? - ??????????</title>
复制代码
我在Add-Content "output.txt"加上-Encoding ascii输出也是一样,没变化
▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃
我在Add-Content "output.txt"加上-Encoding utf8
执行编码后,打开输出的txt文本显示是带有bom的utf-8的编码,乱码变了个花样,如下:
  1. E:\news\1.html : 4 : <title>&#65533;&#65533;&#1211;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533; - &#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#1386;&#65533;&#65533;&#1470;</title>
  2. E:\news\2.html : 4 : <title>&#65533;&#65533;&#65533;&#1203;&#65533;&#938;&#65533;&#65533;&#65533;&#65533;&#1454;&#496; - &#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#1386;&#65533;&#65533;&#1470;</title>
  3. E:\news\3.html : 4 : <title>&#1211;&#65533;&#65533;&#65533;в&#65533;&#65533;&#65533;&#752;&#65533;&#65533;&#65533;&#65533; - &#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#1386;&#65533;&#65533;&#1470;</title>
复制代码
▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃

以上的html文件用记事本打开是ANSI编码,还有几个个别的html文件是带有BOM的UTF-8的编码,输出后的txt显示的也不正常。
▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃

我用Invoke-WebRequest查看了下是ISO-8859-1的编码,但是网页源文件显示的是charset="utf-8"
  1. (Invoke-WebRequest -Uri 'https://www.dzwzzz.com/2016_06/duzh20160620.html').BaseResponse.CharacterSet
复制代码
代码怎么改输出后的txt既是UTF-8的编码又能显示正常呢?
发表于 2021-4-26 12:10:10 | 显示全部楼层
问题在第二行,Select-String部分改为
  1. Select-String -Pattern "<title>" -Encoding default
复制代码

评分

参与人数 1技术 +1 收起 理由
wxyz0001 + 1 感谢分享

查看全部评分

 楼主| 发表于 2021-4-26 12:54:23 | 显示全部楼层
回复 2# yhcfsr
点题了,非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 05:09 , Processed in 0.017705 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表