Python 3.x cgi python3编码问题

Python 3.x cgi python3编码问题,python-3.x,character-encoding,cgi,Python 3.x,Character Encoding,Cgi,我创建了cgi脚本(使用apache在localhost上运行),它将从textarea加载文本,然后我将使用它。我对像ť、ť、ť、ť这样的角色有问题,。。它们没有正确显示。我试过很多方法。这是我在WCH中的简短代码的一个版本,我正在寻找正确的方法来处理它 #!C:/Python33/python # -*- coding: UTF-8 -*- import cgi import cgitb cgitb.enable() form = cgi.FieldStorage() if form

我创建了cgi脚本(使用apache在localhost上运行),它将从textarea加载文本,然后我将使用它。我对像ť、ť、ť、ť这样的角色有问题,。。它们没有正确显示。我试过很多方法。这是我在WCH中的简短代码的一个版本,我正在寻找正确的方法来处理它

#!C:/Python33/python 
# -*- coding: UTF-8 -*-

import cgi
import cgitb

cgitb.enable()

form = cgi.FieldStorage()
if form.getvalue('textcontent'):
   text_content = form.getvalue('textcontent')
else:
   text_content = ""


print ("Content-type:text/html")
print ()
print("<!DOCTYPE html>")
print ("<html>")
print ("<head>")
print("<meta charset='UTF-8'></meta>")
print ("</head>")
print ("<body>")
print ("<form>")
print ("text_area:<br />")
print ("<textarea name='textcontent' rows='5' cols='20'></textarea>")
print ("<br />")
print ("<input type='submit' value='submit form' />")
print ("</form>")
print("<p>")
print(text_content) 
print("</p>")
print ("</body>")
print ("</html>")
当我在html部分中使用拉丁语-1作为python编码,utf-8作为字符集时,它的工作原理如下:

časa -> časa (correctly)
但对于带有重音符号的字符(例如:否),它返回错误:

UnicodeEncodeError: 'charmap' codec can't encode character '\\ufffd' in position 0: character maps to <undefined>\r
UnicodeEncodeError:“charmap”编解码器无法对位置0中的字符“\\ufffd”进行编码:字符映射到\r\n
使用
sys.stdout.encoding
写入
cp1250
编码(在windows下工作),使用
sys.getdefaultencoding()
返回
utf-8

我还尝试了
text\u content=(form.getvalue('textcontent')).encode('utf-8')
例如word
čslo
,结果是
b'\xef\xbf\xbd\xef\xbf\xbdslo'

我不知道如何处理这个问题

我需要
číslo->čslo
fo示例

更新:现在我有了一个html编码的Pyton的UTF-8。看起来文本处理(将单词与字典进行比较,…)进展顺利,所以现在唯一的问题是输出看起来像��tam,所以我需要修改它,使其看起来像čtam,而不是��谭

更新2:当编码为UTF-8时,在浏览器UTF-8中也会显示�s、 当我将浏览器编码更改为cp1250时,它会正确显示,但当我重新刷新站点或单击“提交”按钮时,它会写入错误
UnicodeEncodeError:“charmap”编解码器无法编码字符“\\ufffd”


更新3:在linux上尝试过,在遇到一些问题后,我发现apache服务器使用了错误的编码(ascii),但我还不能解决这个问题。将
/etc/apache2/envvars
修改为PATH LANG=“sk_sk.UTF-8”,但gedit在终端中收到一些警告,指出编辑不好。因此编码仍然是ascii

用以下方式编写表单:

<form accept-charset="utf-8">

在表单中放入
accept charset=“utf-8”
,它可以解决此问题

<form accept-charset="utf-8">