不输出到终端时编码错误
Encoding error when not outputting to terminal
我想知道为什么捕获(管道)stdout 会导致一个空文件,而 不捕获它 会导致正常输出。输出到终端时,我没有收到编码错误。仅在管道输出时。
当输出到管道而不是终端时编码会改变吗?也许终端可以表示支持的编码,而管道默认为 ASCII?
管道输出
$ curl -s 'https://www.sunwind.no/Outlet/' | html2text | wc
Traceback (most recent call last):
File "<string>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe5' in position 212: ordinal not in range(128)
0 0 0
没有捕获输出
curl -s 'https://www.sunwind.no/Outlet/' | html2text
* [Forsiden](https://www.sunwind.no/)
* [Logg inn](/login/)
* [Registrer meg](https://www.sunwind.no/register/)
[](https://www.sunwind.no
"Klikk her for å gå til forsiden")
[](https://www.sunwind.se
"Klikk her for å gå til Sunwinds svenske side")
[](https://www.sunwind.fi
"Klikk her for å gå til Sunwinds finske side")
[](https://www.sunwind.no/page/?pid=132
"Klikk her for å gå til Sunwinds danske side")
[](https://www.sunwind.no/en/
"Klikk her for å gå til engelsk side")
[ ](https://www.sunwind.no/)

* __ 0 **kr 0,-**
Nylig lagt til i handlevognen
[Gå til handlekurven](https://www.sunwind.no/account/basket/)
[ Sunwind.no](https://www.sunwind.no/)
* Alle produkter __
##### **[KJØKKEN OG GASS](/product/content/show/?cap=7&KJOKKEN-OG-GASS) **
* [__Gasskomfyr](https://www.sunwind.no/product/category/?cap=13)
* [__Innbyggingsovn gass](https://www.sunwind.no/product/category/?cap=14)
* [__Gasstopp](https://www.sunwind.no/product/category/?cap=15)
* [__Gasskjøleskap](https://www.sunwind.no/product/category/?cap=63)
* [__Kjøleskap 12 volt](https://www.sunwind.no/product/category/?cap=148)
* [__Kjøle- og fryseboks](https://www.sunwind.no/product/category/?cap=144)
* [__Kjøkkenvifte](https://www.sunwind.no/product/category/?cap=65)
* [__Tilbehør og turutstyr](https://www.sunwind.no/product/category/?cap=97)
* [__Gassutstyr og monteringsmateriell](https://www.sunwind.no/product/category/?cap=20)
etc
html2text
别名是单行 python 命令:
alias html2text='python -c "import sys,html2text;sys.stdout.write(html2text.html2text(sys.stdin.read().decode(\"utf-8\")))"'
这是我第一次遇到这种情况。我的单行线是否以某种方式无法处理管道输出?
只需我的 2 美分,因为输入数据已正确解码 (.decode(\"utf-8\")
),输出数据也需要编码 (.encode(\"utf-8\")
)。所以你的一个班轮的工作版本应该如下所示。 why题需要很长时间研究
alias html2text='python2 -c "import sys,html2text;sys.stdout.write(html2text.html2text(sys.stdin.read().decode(\"utf-8\")).encode(\"utf-8\"))"'
curl -s 'https://www.sunwind.no/Outlet/' | html2text | wc
764 1839 29329
我想知道为什么捕获(管道)stdout 会导致一个空文件,而 不捕获它 会导致正常输出。输出到终端时,我没有收到编码错误。仅在管道输出时。
当输出到管道而不是终端时编码会改变吗?也许终端可以表示支持的编码,而管道默认为 ASCII?
管道输出
$ curl -s 'https://www.sunwind.no/Outlet/' | html2text | wc
Traceback (most recent call last):
File "<string>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe5' in position 212: ordinal not in range(128)
0 0 0
没有捕获输出
curl -s 'https://www.sunwind.no/Outlet/' | html2text
* [Forsiden](https://www.sunwind.no/)
* [Logg inn](/login/)
* [Registrer meg](https://www.sunwind.no/register/)
[](https://www.sunwind.no
"Klikk her for å gå til forsiden")
[](https://www.sunwind.se
"Klikk her for å gå til Sunwinds svenske side")
[](https://www.sunwind.fi
"Klikk her for å gå til Sunwinds finske side")
[](https://www.sunwind.no/page/?pid=132
"Klikk her for å gå til Sunwinds danske side")
[](https://www.sunwind.no/en/
"Klikk her for å gå til engelsk side")
[ ](https://www.sunwind.no/)

* __ 0 **kr 0,-**
Nylig lagt til i handlevognen
[Gå til handlekurven](https://www.sunwind.no/account/basket/)
[ Sunwind.no](https://www.sunwind.no/)
* Alle produkter __
##### **[KJØKKEN OG GASS](/product/content/show/?cap=7&KJOKKEN-OG-GASS) **
* [__Gasskomfyr](https://www.sunwind.no/product/category/?cap=13)
* [__Innbyggingsovn gass](https://www.sunwind.no/product/category/?cap=14)
* [__Gasstopp](https://www.sunwind.no/product/category/?cap=15)
* [__Gasskjøleskap](https://www.sunwind.no/product/category/?cap=63)
* [__Kjøleskap 12 volt](https://www.sunwind.no/product/category/?cap=148)
* [__Kjøle- og fryseboks](https://www.sunwind.no/product/category/?cap=144)
* [__Kjøkkenvifte](https://www.sunwind.no/product/category/?cap=65)
* [__Tilbehør og turutstyr](https://www.sunwind.no/product/category/?cap=97)
* [__Gassutstyr og monteringsmateriell](https://www.sunwind.no/product/category/?cap=20)
etc
html2text
别名是单行 python 命令:
alias html2text='python -c "import sys,html2text;sys.stdout.write(html2text.html2text(sys.stdin.read().decode(\"utf-8\")))"'
这是我第一次遇到这种情况。我的单行线是否以某种方式无法处理管道输出?
只需我的 2 美分,因为输入数据已正确解码 (.decode(\"utf-8\")
),输出数据也需要编码 (.encode(\"utf-8\")
)。所以你的一个班轮的工作版本应该如下所示。 why题需要很长时间研究
alias html2text='python2 -c "import sys,html2text;sys.stdout.write(html2text.html2text(sys.stdin.read().decode(\"utf-8\")).encode(\"utf-8\"))"'
curl -s 'https://www.sunwind.no/Outlet/' | html2text | wc
764 1839 29329