我正在为学校做 C 级作业。这是作业的确切措辞:
“编写一个程序,打印从 0 到 255 的整数列表以及相应的 ASCII 字符。”
实际代码很简单:
#include <stdio.h>
int main() {
int i;
for (i = 0; i <= 256; i++) {
printf("%d --> %c\n", i, i);
}
return 0;
}
但是,我需要使用 Django 在网页中显示此输出。我用 gcc(启用了 -std=C99 选项)编译了这段代码,它输出正常。但是,在网页中,这不会输出任何内容。我们的 Django View 使用 popen2 打开带有以下代码的可执行文件:
if os.path.isfile(file_sh):
output = popen2.popen2(file_sh)[0].read()
并且该页面已经过测试,可以与此类的所有其他 C 代码一起使用。我在 View 中添加了一个 print 语句,以验证代码的输出是否正确发送到浏览器,并且它在终端而不是浏览器中正确显示。事实上,它根本没有显示在浏览器中。经过进一步检查,此页面通常会显示代码输出的标签内绝对没有任何内容。我猜这与字符编码有关。有什么想法吗?
编辑:我忘了在我的模板中提到,我使用 meta 标签将字符编码指定为 utf-8。
编辑 2:我的一个 friend 有一个版本可以显示在 Windows 上保存为 utf-8 的文本文件的内容,地址为 http://geekingreen.dyndns.org/week02/Assignment-5。 ,但是如果他试图显示带有可执行文件输出的页面,他会遇到和我一样的问题。
最佳答案
哈,找到了一种至少可以将其呈现到页面的方法,字符显示不正确,但至少它可以将某些内容呈现到页面。
代码很简单:
mystring = unicode(mystring, errors='replace')
编辑:找到了更好的方法
import chardet
chartype = chardet.detect(mystring)
# perhaps you may want to check the confidence that it is that encoding first?
# if chartype['confidence'] > 0.5 or something
mystring = mystring.decode(chartype['encoding']).encode('utf-8')
效果很好,虽然有些字符似乎仍然缺失,但它比以前的方法显示更多。
关于python - 如何在C中打印出0到255的ascii字符,通过Django显示在网页中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7522742/