阅读:3343回复:2
修改源代码,让mapserver显示汉字
在mapserver4 中,对于lable的显示主要集中在mapgd.c中。<BR>该版本主要是在mapgd.c中实现unicode到gbk的转码。<BR>注意:在maplab中字体的引用要使用绝对路径。<BR>在int msDrawTextGD()函数中添加如下代码。<BR><BR>char *strto; iconv_t ct; size_t outsize; size_t insize; size_t res; size_t insize1;<BR>char *outbuf; char *ptr; char *cp;<BR>ptr = string;//sprintf(string,"%s","abc你好def");<BR>insize = 0;<BR>outsize = 0;<BR><BR><BR>while(*ptr)//a utf8 chinese ch use three byte and a gb use double byte { if ((unsigned char)(*ptr) > 128) //if it is a double ch,outsize+1 { outsize+=2;<BR>insize++; ptr ++; } insize++;<BR>outsize++;<BR>ptr++; } ptr = (char *)malloc(insize+1);<BR>sprintf(ptr,"%s",string);//iconv error if insize = strlen(string) so must use ptr for string<BR>ptr[insize]="\0";<BR><BR><BR>if(outsize>insize)<BR>{<BR>strto=(const char*) (malloc(outsize+1));//sprintf(strto,"%s,%d,%d","abc",insize,outsize);<BR>// outbuf=(const char*) (malloc(outsize+1)); strto[outsize] = '\0'; ct = iconv_open("UTF-8","GBK"); outbuf = strto; res = iconv(ct,(const char**);ptr,;insize,;outbuf,;outsize); iconv_close(ct);<BR>} <!-- InstanceEndEditable -->
|
|
|
1楼#
发布于:2006-08-17 16:22
<P>请问,这个mapgd.c文件在什么地方啊?我在ms4w目录下找了半天也没找到。我是新手,请不吝赐教。谢谢! </P>
|
|
2楼#
发布于:2006-11-07 09:08
在ms4w目录是没有的,你要下载mapserver源码才有.<br>
|
|