Board logo

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

作者: wxyz0001    时间: 2021-4-26 01:14     标题: [已解决]Powershell关于文本输出的编码乱码的问题

本帖最后由 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>��һ����������� - ������ժ��־</title>
  2. E:\news\2.html : 4 : <title>���ҳ�Ϊ����֮ǰ - ������ժ��־</title>
  3. E:\news\3.html : 4 : <title>һ���в���˰���� - ������ժ��־</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的编码又能显示正常呢?
作者: yhcfsr    时间: 2021-4-26 12:10

问题在第二行,Select-String部分改为
  1. Select-String -Pattern "<title>" -Encoding default
复制代码

作者: wxyz0001    时间: 2021-4-26 12:54

回复 2# yhcfsr
点题了,非常感谢!




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