[入门] 有关字符和字符串的问题

codekitten 2007-06-29
这段代码
import std.stdio;
int main(char[][] args)
{
    wchar[] p = "你好";
    writefln(p);
    return 0;
}
为什么输出的结果是"浣犲ソ"
难道是我什么概念没有搞清楚?

第二个问题,char不是UTF-8码的吗,为什么不能表示中文呢?
codekitten 2007-06-30
为什么这个问题啊,难道是这个问题太弱智了?
oldrev 2007-06-30
看看源程序是不是utf-8的
sleets 2007-06-30
我的源是utf-8的,但是出来的也是乱码。
ideage 2007-06-30
这是std.stdio的问题。


文件保存为 UTF8格式

import std.stdio;
import std.c.locale;

int main(char[][] argv)
{
fwide(stdout, 1);
setlocale(LC_CTYPE, "china");

writefln("你好,世界!");
return 1;
}


请看
http://dlang.group.iteye.com/group/topic/444
codekitten 2007-06-30
方法是可行,但是这样是不是太麻烦了一点,我如果要输出一个中文,就必须调用另一个库,有没有比较简便的办法呢
codekitten 2007-06-30
还有一个问题,不管它是不是乱码,为什么这样定义是有错的:
char a = '我';
难道必须
wchar a = '我';
char不是支持UTF-8吗,难道UTF-8中没有汉字编码?
oldrev 2007-06-30
忘了说,这是 Windows 控制台不支持 utf8造成的,Phobos 里有很多地方调用的是 *A 的API却直接传了UTF8的字符串,对多字节支持很成问题。不知道Walter怎么想的,不用*W的
Colorful 2007-06-30
codekitten 写道
还有一个问题,不管它是不是乱码,为什么这样定义是有错的:
char a = '我';
难道必须
wchar a = '我';
char不是支持UTF-8吗,难道UTF-8中没有汉字编码?


char表示1个字节,没有办法把'我'编码,编译器这时报出错误是正确的。
char[]才能够表达UTF-8编码。

不过,现在2.0的编译器对于这样的字符串常量都用string,wstring,dstring来表示,phobos库都改成string了。当然在char,wchar,dchar加const前缀也可以。

在D中,他们只是别名的关系。

alias const(char)[] string;
alias const(wchar)[] wstring;
alias const(dchar)[] dstring;
codekitten 2007-07-01
原来支持UTF-8就是这么个支持法?
真是服了Walter,你就一个字节如何UTF-8啊?
唉,D语言啊,想说爱你不容易
Global site tag (gtag.js) - Google Analytics