Python CGI 脚本不会在 Linux 上打印希伯来语

标签 python html linux encoding cgi

我无法让 python CGI 在 Linux 上将希伯来语字符打印到 html 网页。这是一个演示问题的脚本:

#!/usr/bin/python3
print('Content-Type: text/html; charset=utf-8\n\n')
print ('<html><body>')
print ('first')
print ('second')
print ('תמות')
print ('third')
print ('</body></html>')

文件以utf-8(无BOM)格式保存。我直接从浏览器地址栏调用这个 .cgi 脚本。输出为:

first second

虽然希伯来语单词和后面的内容都丢失了。 apache 日志中或启用 cgitb 时没有显示错误

我在 Linux ubuntu 12.04 和 centos 6 上使用 apache 2.2 和 python 3.2 以及 Firefox、chrome 和 IE 进行了测试。当然,我可以在任何纯 html 页面上看到希伯来语。在 Windows 上它工作得很好。

编辑:虽然链接的问题确实给出了最终的解决方案,但这仍然不是重复的。请参阅下面我的评论。

最佳答案

看起来 sys.stdout 的默认编码不一定是 UTF-8。如果您想使用 sys.stdout.buffer.write,请尝试以下操作:

sys.stdout.buffer.write('תמות'.encode('utf-8'))

关于Python CGI 脚本不会在 Linux 上打印希伯来语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13425709/

相关文章:

python - 快速加倍斐波那契 Python 生成器序列

python - 连接多个 USB 摄像头

python - 时间特定线程

javascript - HTML 连接图绘制

html - 透明屏幕不允许在 Firefox 中滚动,但可以在 Chrome 中使用

c - Debian 中 gcc 的奇怪行为

python - python中的特征值和向量计算错误

Linux 命令行语法 - 在 ping 请求后管道输入命令

c++ - 我不明白的关于默认构造函数的一些事情

html - 如何仅将 css 属性应用于我的第一个 div 类