100分! nusoap 返回数组

shadowcats 2009-04-01 01:45:54
代码里我是把数组序列化了(serialize)然后call时再unserialize,所以返回类型string也应该可以。
返回数组:二维
例子:$res[0]["memberid"]="30004513";
$res[0]["GRZL_username"]="lhdwh@eyou.com";
像上面这样的返回数组我如果直接写死在程序里一切ok!但如果是通过数据库返回的就报错:XML error parsing SOAP payload on line 1: Invalid character

请问是为什么呢,这个报错是什么意思?
万分感谢!!!!^_^
...全文
465 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
总哈哈 2009-04-01
  • 打赏
  • 举报
回复
嗯,楼主加油!
  • 打赏
  • 举报
回复
呵呵,解决了就好

一般这种问题,你要先检查是否有乱码
shadowcats 2009-04-01
  • 打赏
  • 举报
回复
谢谢楼上两位,解决了!

是这样的:
* soap是utf8编码
* 数据库是gbk编码
编码不一样导致产生上面的报错。

我是这样做的:
1.在服务端把序列化后的字符从GBK转码为soap要求的UTF-8后返回结果:
$str =array("正文");
$serialize_str = serialize($str);
$res = iconv("GBK","UTF-8",$serialize_str);
return $res;

2.在client端取结果后再把UTF-8转换为页面要求的GBK,然后解序列化后打印数组就是正常无中文乱码的数组啦:
$iconv_str = iconv("UTF-8","GBK",$res);
$arr = unserialize($iconv_str);
var_dump($arr);

^_^_^_^_^_^_^_^思路比努力更重要!嘻嘻^_^_^_^_^_^_^_^
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shadowcats 的回复:]
晕!是数组里有中文的问题!
但我搜了一些文章,都说是中文显示出来乱码为问号了,但我这根本不显示。。。。汗。。。
[/Quote]

你把编码设置为统一的看看
hqaht 2009-04-01
  • 打赏
  • 举报
回复
serialize() 可处理除了 resource 之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。你正 serialize() 的数组/对象中的引用也将被存储。
hqaht 2009-04-01
  • 打赏
  • 举报
回复
把数据库的字符打印出来看看
然后 在单独把数据库取出来的数据 序列化试试
shadowcats 2009-04-01
  • 打赏
  • 举报
回复
晕!是数组里有中文的问题!
但我搜了一些文章,都说是中文显示出来乱码为问号了,但我这根本不显示。。。。汗。。。


  • 打赏
  • 举报
回复
无法识别的字符

检查下是否由于乱码造成的

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧