如何手工组合Unicode的SQL命令,目前在进行UTF8Encode转换时候报语法错误!实际上它的字节编码是正确的!(200分)

  • 主题发起人 主题发起人 fzzf
  • 开始时间 开始时间
F

fzzf

Unregistered / Unconfirmed
GUEST, unregistred user!
例子(BCB中的代码):<br>AnsiString sTemp = "insert into temp(aa) values('我的家')"; &nbsp;//这里汉字为基数个<br>sTemp = UTF8Encode(edt1-&gt;Text);<br>//跟踪后发现sTemp = insert into temp(aa) values('鎴戠殑瀹?)<br>qry1-&gt;SQL-&gt;Text = sTemp;<br>qry1-&gt;ExecSQL(); &nbsp; &nbsp;//异常,sql语法错误.见跟踪后的代码!<br><br>各位不只有什么方法可以解决该问题!给各思路也可以有分!<br>Delphi的解决方案也可以提!
 
自己来顶一下!
 
如果只是字符串需要存,将utf8 code 转 hex 格式的 str 取 同样反转<br>sql语句如果有 ? 等,会错误<br><br>可以参考 这个地址 http://delphi.ktop.com.tw/board.php?fid=66&amp;tid=60179<br><br>说的好
 
我的家后面多加个空格,即'我的家 '
 
嗯,MSSQL可以将字符串值转换成16进制类型处理,<br>如上面你的代码:<br>insert table1 (aa) values('12345');<br>可以弄成这样:<br>insert table1 (aa) values(0x3132333435);<br><br>也就是说,将utf8再转一次16进制处理,这样就不会有问题
 
早上刚到,谢谢各位的关注!<br>power255 提到的加入空格方法好像有点不太妥,这样存入的实际信息都不是实际需要的,精确查找时存在问题!<br>bsense与errorcode 的想法,我正在试验,呆会在上来!
 
后退
顶部