首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将WideString转换为字符串

将WideString转换为字符串
EN

Stack Overflow用户
提问于 2013-04-29 10:28:44
回答 1查看 1.7K关注 0票数 2

如何从字符串中替换空的宽字符串字符?

例句:“H l l o”改为“Hello”

我从DB中读取了一个文本blob字段,并希望将其存储在另一个表中。当我阅读它时,我得到了额外的空格,当我存储它时,多余的空格仍然存在,并且在下一个查询中无法正确读取。

DXE,Firebird 2.5

更新

我使用IBQuery -> DataSetProvider -> ClientDataSet,而不使用desin-time创建的字段。它接缝,IBQuery以错误的格式检索数据。

当前写码:

代码语言:javascript
复制
blobStream := TStringStream.Create;
...
blobStream.WriteString(blobText); //blobText = 'H e l l o';
ibsql.ParamByName('ABLOBCOL').LoadFromStream(blobStream);
...
ibsql.ExecQuery;
...

在FB数据库中存储的是“be l l o”,但它必须是“Hello”。由于它似乎是IBQuery中的一个bug,所以我需要一种转换该字符串的方法。

EN

回答 1

Stack Overflow用户

发布于 2013-04-29 10:47:06

首先,我不打算描述如何从字符串中删除所有其他字符。虽然这可能会解决你的问题,但它只是薄薄的文件,以弥补裂痕。这里有一个经典的文本编码不匹配。解决你的问题的真正解决办法将是解决错配问题。

我怀疑在您没有显示的代码中出现了这个问题。正如我现在理解您的问题一样,您有一个包含错误编码文本的string变量blobText。但是问题中的代码以blobText作为输入,所以当我们到达问题中的代码时,损害已经发生了。解决这个问题的关键是将垃圾数据放入blobText中的代码。

您需要找到分配给blobText的代码,并在那里解决编码问题。看起来,您已经采取了UTF-16编码文本,并将它解释为它有一个8位编码。我可以推测这种情况是如何发生的,但是您最好看看实际的代码,即分配给blobText的代码。如果你不能解决它,请做一个更新的问题。

我很有信心数据库库中没有错误,这只是编码不匹配。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16276374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档