碰到一个奇怪的问题:
我从服务端取到一个字符串保存在变量S中,我要用S拼出自己要的一个字符串,如
<Name>S</name>;但是现在结果显示出来有时候会变成这样:<Name>S?/name>;
好像是S后面带了一个不可见的字符(前面把S打印出来发现是没有问题的,有一次打印出来有一个空格)和尖括号的另一半组合成一个问号了;现在程序不在自己这边,不能单步调试,所以向大家请教

解决方案 »

  1.   

    是不是用的AnsiString,看上去S后面的一个字节和‘<’组成了一个MBCS字符。
      

  2.   

    这肯定是由于S后面多了一个字符。
    看你的服务端是怎样返回的数据。
    有几种可能性:
    1 SQL SERVER中存在半个汉字。
    2 在数据传输的过程中多了一个字节。
      

  3.   

    要看你的半个汉字是怎样产生的。
    最常见的产生半个汉字的情况是
    假设你在sql server中定义的是varchar(2)
    那么
    Query.Edit;
    Query['field'] := 'a我'; //半个汉字产生了!解决方法:加大字段长度,或者使用nvarchar(2)
    不过对已经存在的半个汉字很麻烦,只能用手工处理,或者写程序来检测有没有半个汉字。
      

  4.   

    xml一定要注意字符的编码,是否utf的,c-s端要一致呢
      

  5.   

    是不是由于 用了object来传字符串了
      

  6.   

    在服务器发送之前保存成log,刚收到后也保存成log,再看看是哪部分出问题了