gpt4 book ai didi

python - Peter Piper 通过管道传输了一个 Python 程序 - 并丢失了他所有的 unicode 字符

转载 作者:太空狗 更新时间:2023-10-29 16:56:39 27 4
gpt4 key购买 nike

我有一个 Python 脚本,它使用 urllib2.urlopen 加载网页,执行一些不同的操作,然后使用 print 输出结果。然后我们像这样在 Windows 上运行该程序:

python program.py > output.htm

问题是:

urlopen 从输出 UTF8 的 IIS Web 服务器读取数据。它向输出吐出相同的数据,但是某些字符(例如 Word 总是违背你的意愿为你插入的长连字符,因为它比你聪明)会出现乱码并最终像 - 相反。

经过进一步调查,我注意到即使网络服务器吐出 UTF8 数据,output.htm 文件也是使用 ISO-8859-1 字符集编码的。

我的问题:

  1. 当您将 Python 程序重定向到 Windows 上的输出文件时,它是否始终使用此字符集?
  2. 如果是这样,有什么办法可以改变这种行为吗?
  3. 如果没有,是否有解决方法?我想我可以将 output.htm 作为命令行参数传递并写入该文件而不是屏幕,但我必须在我的程序中重做一大堆逻辑。<

感谢您的帮助!

更新:

output.htm 的顶部我添加了:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

但是,这没有什么区别。字符仍然是乱码。如果我在 Firefox 中手动切换到 UTF-8,文件会正确显示。 IE 和 FF 都认为这个文件是西方 ISO,尽管它显然不是。

最佳答案

从您的评论和问题更新来看,数据似乎已正确编码为 UTF-8。这意味着您只需要告诉您的浏览器它是 UTF-8,通过使用 BOM,或者更好的方法,通过将编码信息添加到您的 HTML 文档:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>

如果文档不是有效的 XML,您真的不应该使用 XML 声明。

最好和最可靠的方法是通过 HTTP 提供文件并适本地设置 Content-Type: header 。

关于python - Peter Piper 通过管道传输了一个 Python 程序 - 并丢失了他所有的 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8761310/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com