python - 如何在C中打印出0到255的ascii字符,通过Django显示在网页中?

标签 python c django encoding

我正在为学校做 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/

相关文章:

Python正则表达式潜在匹配

c - Ubuntu 中有 gedit 的调试器吗?

python - 如何访问 __init__ 方法中的 django 表单值以进行查询

python 请求不适用于来自 apache 和 wsgi 的 https

Django 提要框架 : tzinfo error

python - 终止进程会打破Python的诅咒

Python 检查函数是否有返回语句

python - Windows 上的 Flask 重新加载模块

c - 声明和定义之间的数组/指针不匹配 - 那么会发生什么?

c - C 中的多线程目录工作