gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:3179回复:2

修改源代码,让mapserver显示汉字

楼主#
更多 发布于:2005-08-24 15:35
在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 -->
喜欢0 评分0
jeffrey27
路人甲
路人甲
  • 注册日期2006-08-08
  • 发帖数1
  • QQ
  • 铜币105枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2006-08-17 16:22
<P>请问,这个mapgd.c文件在什么地方啊?我在ms4w目录下找了半天也没找到。我是新手,请不吝赐教。谢谢! </P>
举报 回复(0) 喜欢(0)     评分
dxf1122
路人甲
路人甲
  • 注册日期2005-11-07
  • 发帖数6
  • QQ
  • 铜币122枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2006-11-07 09:08
在ms4w目录是没有的,你要下载mapserver源码才有.<br>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部