gpt4 book ai didi

delphi - 将宽字符串转换为字符串

转载 作者:行者123 更新时间:2023-12-03 18:16:29 26 4
gpt4 key购买 nike

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

例如:'H e l l o' 转换为 'Hello'

我从数据库中读取了一个文本 blob 字段,并想将其存储在另一个表中。当我读取它时,我得到了额外的空间,当我存储它时,额外的空间仍然存在,并且在下一次查询时无法正确读取。

DXE, Firebird 2.5

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

当前写入代码:

blobStream := TStringStream.Create;
...
blobStream.WriteString(blobText); //blobText = 'H e l l o';
ibsql.ParamByName('ABLOBCOL').LoadFromStream(blobStream);
...
ibsql.ExecQuery;
...

FB数据库中存储的是'H e l l o',但必须是'Hello'。由于它似乎是 IBQuery 中的错误,我需要一种方法来转换该字符串。

最佳答案

首先,我不会尝试描述如何从字符串中删除所有其他字符。虽然这似乎可以解决您的问题,但它只是薄薄地盖住了裂缝。您在这里遇到的是典型的文本编码不匹配问题。您的问题的真正解决方案将涉及修复不匹配。

我怀疑问题出在您未显示的代码中。据我了解您的问题,您有一个 string 变量 blobText,其中包含错误编码的文本。但是问题中的代码将 blobText 作为输入,因此当我们到达问题中的代码时,损坏已经完成。解决这个问题的关键是将 duff 数据放入 blobText 的代码。

您需要找到分配给 blobText 的代码并解决那里的编码问题。看起来您采用了 UTF-16 编码的文本并将其解释为好像它具有 8 位编码。我可以推测这将如何发生,但您最好查看实际代码,即分配给 blobText 的代码。如果您无法解决问题,请发布问题的更新。

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

关于delphi - 将宽字符串转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16276374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com