如何从字符串中替换空的宽字符串字符?
例句:“H l l o”改为“Hello”
我从DB中读取了一个文本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数据库中存储的是“be l l o”,但它必须是“Hello”。由于它似乎是IBQuery中的一个bug,所以我需要一种转换该字符串的方法。
发布于 2013-04-29 10:47:06
首先,我不打算描述如何从字符串中删除所有其他字符。虽然这可能会解决你的问题,但它只是薄薄的文件,以弥补裂痕。这里有一个经典的文本编码不匹配。解决你的问题的真正解决办法将是解决错配问题。
我怀疑在您没有显示的代码中出现了这个问题。正如我现在理解您的问题一样,您有一个包含错误编码文本的string变量blobText。但是问题中的代码以blobText作为输入,所以当我们到达问题中的代码时,损害已经发生了。解决这个问题的关键是将垃圾数据放入blobText中的代码。
您需要找到分配给blobText的代码,并在那里解决编码问题。看起来,您已经采取了UTF-16编码文本,并将它解释为它有一个8位编码。我可以推测这种情况是如何发生的,但是您最好看看实际的代码,即分配给blobText的代码。如果你不能解决它,请做一个更新的问题。
我很有信心数据库库中没有错误,这只是编码不匹配。
https://stackoverflow.com/questions/16276374
复制相似问题