高手帮忙,中文输出

hqs7636 2008-05-07
import std.stdio;
import std.c.locale;
import std.conv; 
import std.process;
import std.windows.syserror;  
void main(char[][] argv)
{         
    fwide(stdout, 1);  
    setlocale(0, "china"); 
    writefln("错误:",sysErrorString(to!(int)(argv[1])));//printf
    system( "pause" ); // getch();
	
    //return 1; 
}  

上面这段代码好不容易调通了,编译、build都不报错了,可控制台窗口就是停不住,看不到内容,不知道对了没有?


下面这段代码就一切正常,环境都是dmd2.013

import std.stdio;

void main(char[][] args)
{	
    printf("hello world\n");
    printf("args.length = %d\n", args.length);
    for (int i = 0; i < args.length; i++)
    printf("args[%d] = '%s'\n", i, cast(char *)args[i]);	
    getch(); 
   // return 0;
}
qiezi 2008-05-07
上面的错误应该是抛出异常,没传递参数,数组越界了,根本没执行到pause这一行。

直接在控制台下执行就能看到。
hqs7636 2008-05-07
俺把它简化成这样:
import std.stdio;
import std.c.locale;
import std.process; 
void main(char[][] argv)
{         
    fwide(stdout, 1);  
    setlocale(0, "china"); 
    writefln("你好 dmd ");
    system( "pause" );
}

输出得到的是: ¥ dmd ,换成任何中文都变成人民币符号了。环境是win2003sp2, dmd2.013
DavidL 2008-05-08
用utf8保存,这个该加到FAQ里