none
急求windows下用c语言开发PHP扩展时,在C语言里把字符串转成utf-8编码再打印的方法。 RRS feed

  • 问题

  • 因我是用windows下用c开发PHP扩展时,
    想在C的函数内直接打印php_printf某字符串(其中含有汉字字符),
    但在PHP调用这个函数时,看到的时汉字乱码。PHP页面用的是utf-8编码格式。
    代码如下:

    hello.c(只是被PHP调用函数,注意不用返回字符串,直接用php_printf打印。)
    PHP_FUNCTION(hello)
    {
    char *hello="";
    int len = 0;
    char *ret = "";

    hello = "中国hello world";
    len = strlen(hello);
    ret=(char*)emalloc(len);
    memcpy(ret, hello, len+1);

    php_printf("%s",ret);

    RETURN_LONG(0);

    }

    hello.php
    <?php header("Content-type:text/html;charset-utf-8"); ?>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    <body>

    <?php hello();?><!--或者非得要用函数返回字符串,再在这里转成utf-8吗?-->

    </body>
    </html>

    如果把浏览器调成GB2312编码时,看到PHP页面的汉字字符串显示就正常了。
    所以我认为C中php_printf时是GB2312编码,不知道是不是这个编码格式。
    请高手帮我改改,尽量详细些,因我多年没用C了。

    谢谢!

    2012年8月15日 7:52

答案