易截截图软件、单文件、免安装、纯绿色、仅160KB

delphi 字符串 有乱码,请教高手

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

现在程序不在自己这边,不能单步调试,所以向大家请教。。。

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

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

那这种错误如何避免,怎么把后面半个汉字的字符去掉呢?

要看你的半个汉字是怎样产生的。
最常见的产生半个汉字的情况是
假设你在sql server中定义的是varchar(2)
那么
Query.Edit;
Query['field'] := 'a我'; //半个汉字产生了!

解决方法:加大字段长度,或者使用nvarchar(2)
不过对已经存在的半个汉字很麻烦,只能用手工处理,或者写程序来检测有没有半个汉字。

是不是你的xml编码有问题

那就需要判断最后一个字符是单字节还是双字节,如果是双字节就去掉

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

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

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

转换为UniCode 来传送


相关问答:

ACCESS的自定义函数在delphi里怎么用呢...

我在模块里自定义了一个函数:stradd()

可是在adoquery1.sql.add('select stradd(author) from book');
时提示stradd未定义...

这个问题有什么办法可以解决的吗? 非常感激!


(在A ......

小弟不会DELPHI,请大侠们帮个忙

这个是拦截按键消息并测试是否为ENTER键。
  begin
    case wParam of
      WM_KEYDOWN:
      fEatKeystroke := (p.vkCode = VK_RETURN);
  & ......

delphi调用dll问题,300分全部送上。

我用delphi调用一个VC++的dll
这个dLL我没有源码。大小写绝对正确

dll里面的一个CloseCommPort函数,dll说明说里面有,说明如下:

5、CloseCommPort
VOID PASCAL CloseCommPort(HANDLE hCom) ......

Delphi Services 里面Findwindow 问题

老产品维护问题,
Delphi 版本:delphi6

如果新建一个Application,
用一下Code可以获得正确的Handle
Delphi(Pascal) code:

procedure TForm1.Button1Click(Sender: TObject);
var
EVMHandle ......

请教关于delphi读取字符串的问题

我现在要读取一个TXT文件 里面 存放的格式是这样带格式的

数据1----数据2----数据3----数据4

我想实现分别读取 数据1  数据2  数据3  数据4

请问delphi下有什么好的方法吗? ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号