Encoding老问题
betty_betty2008
2012-06-08
import std.stdio; import std.string; import std.conv; import std.utf; import std.net.curl; void main() { string content=get("www.yahoo.com.cn"); writefln("%s",conent); readln; } 以上代码运行时产生异常,起因是ENCODING转换失败,对此俺也理解不了。请教问题在哪并如何才能正常打印含有亚洲字体的网页内容。(控制台如何正确显示中文字符坛子里另有贴子说明,不在讨论范围)。谢谢。 |
|
shawind
2012-06-08
可能和libcurl库有关吧,好像curl编译的时候有个开关是选择unicode还是ansi的,记不太清了。
|
|
ww21xx
2012-06-08
betty_betty2008 写道 import std.stdio; import std.string; import std.conv; import std.utf; import std.net.curl; void main() { string content=get("www.yahoo.com.cn"); writefln("%s",conent); readln; } 以上代码运行时产生异常,起因是ENCODING转换失败,对此俺也理解不了。请教问题在哪并如何才能正常打印含有亚洲字体的网页内容。(控制台如何正确显示中文字符坛子里另有贴子说明,不在讨论范围)。谢谢。 不光是这个,就连write、writefln等系列都有问题,我做了一个EchoServer然后不听的接收数据,用writefln打印出来,大概在接收到30000多个包的时候,就出现writefln内存问题。。。。。。。。。。。。库啊!阿门! |
|
betty_betty2008
2012-06-08
ww21xx 写道 betty_betty2008 写道 import std.stdio; import std.string; import std.conv; import std.utf; import std.net.curl; void main() { string content=get("www.yahoo.com.cn"); writefln("%s",conent); readln; } 以上代码运行时产生异常,起因是ENCODING转换失败,对此俺也理解不了。请教问题在哪并如何才能正常打印含有亚洲字体的网页内容。(控制台如何正确显示中文字符坛子里另有贴子说明,不在讨论范围)。谢谢。 不光是这个,就连write、writefln等系列都有问题,我做了一个EchoServer然后不听的接收数据,用writefln打印出来,大概在接收到30000多个包的时候,就出现writefln内存问题。。。。。。。。。。。。库啊!阿门! 。。我倒。。 |
|
老Colorful
2012-06-08
根本就不应该相信 Phobos 库。
|
|
hqs7636
2012-06-08
最近也只是动动datetime等几个功能性的包,基础性的包基本没啥动,老a也好久没动静了,等着大修吧。
要求别太高,中文好不容易搞定了还想搞朝鲜字?30000个包不行搞20000就好了 |
|
betty_betty2008
2012-06-08
hqs7636 写道 最近也只是动动datetime等几个功能性的包,基础性的包基本没啥动,老a也好久没动静了,等着大修吧。
要求别太高,中文好不容易搞定了还想搞朝鲜字?30000个包不行搞20000就好了 Ri,总不能让俺用26个字母搞定所有人吧 |
|
非仙
2012-06-08
为什么我直接编译不过?会报一些符号找不到?
|
|
shawind
2012-06-09
import std.c.stdio; import std.c.stdlib; import etc.c.curl; import std.windows.charset; struct MemoryBuffer { char* data; uint size; } extern(C) static uint write_data(void* buffer, uint size, uint nmemb, void* userp) { uint realsize = size*nmemb; MemoryBuffer* mb = cast(MemoryBuffer*)userp; mb.data = cast(char*)realloc(cast(void*)mb.data, mb.size + realsize + 1); if(mb.data == null) { return 0; } memcpy(&(mb.data[mb.size]), buffer, realsize); mb.size += realsize; mb.data[mb.size] = 0; return realsize; } void main() { CURL* curl; CURLcode res; MemoryBuffer mb; mb.data = cast(char*)malloc(1); mb.size = 0; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CurlOption.url, toMBSz("http://www.baidu.com",0)); curl_easy_setopt( curl, CURLOPT_WRITEDATA, cast(void*)&mb); curl_easy_setopt( curl, CurlOption.writefunction, &write_data ); res = curl_easy_perform(curl); curl_easy_cleanup(curl); } printf("%s\n", mb.data); } 以前写的,大约是2.049的时候吧。记得显示是正常的。现在的嘛,不知道,没试。 反正D只用与C兼容功能时,一般都不会有什么问题。 还有std.net.curl不是正式官方库,主页上没有,etc.c.curl才是。所以,出了什么问题,哭都没地方的。 |