乱码的问题(100分)

  • 主题发起人 主题发起人 4ever
  • 开始时间 开始时间
4

4ever

Unregistered / Unconfirmed
GUEST, unregistred user!
SQL语句:
insert into Table1(code,context) values( '10001' ,'工商企合?')
合字后面是半个汉字。
当执行到此时会产生错误。

错误现象:
General Sql Error
Unclose quotation mark before the character string '工商企合?)'
Incorrect syntax near '工商企合?)'

SQL Server中遇到这种汉字出错时就会提示这样的错误,请问如何解决?
有什么方便的方法?

如果没有直接解决的办法(数据库自己提供的方法),能否编制一个小函数来过滤
这样的坏汉字?由于处理中可能遇到多种问题,请教各位高手不灵赐教。
 
> SQL语句:
insert into Table1(code,context) values( '10001' ,'工商企合?')
合字后面是半个汉字。
当执行到此时会产生错误。

Sql 中的‘半个汉字’是怎么输入的?
 
问题的产生源于异构数据库之间的数据转换,半个汉字在其他一些数据库中可能不被
认为是错误,但是在SQL Server中却被认为是错误,所以现在需要一种解决办法来处
理这个问题。
 
这是一个编码的问题。
注意源数据的编码,一般用unicode能解决这样的问题
 
能具体一点吗?
在源数据库数据无法改变的情况下,该如何处理呢?
 
在源数据库数据无法改变的情况下,该如何处理呢?
在'工商企合?'的?和'之间添一个空格即可,你试试看。
 
上面只是举了一个例子,在实际的数据转换中有太多类似的
情况。因此需要一种解决方案,能够处理各种可能发生的情
况。
关键就是如何发现文本中什么地方出现了半个汉字,以什么
方式出现。比如两个连续汉字各掉一半这种情况如何处理,
等等。
 
如果原来的数据已经是这样的。可能会产生的是高位字符大于127
转成ASCII码,过滤掉高位。可能可以解决您的问题。
 
借光了:

用Unicode后会有TWideStringField字段出现的,Delphi对Unicode支持不是很好。象TDbEdit,根本没办法知道实际该输入多长的数据。
假如一字段定义为nvarchar(20),到底是该输入20个英文字符还是20个汉字还是10个汉字加10个英文字符。
似乎Delphi通通按20个英文字符处理了。

大虾们能告诉我解决的办法吗?先谢了,解决了,我给分的
 
我补充一点说,关键是由于数据库已有数据量很大,因此对每项数据都进行逐位判断高位
不现实。使用WIDESTRING似乎也不行。//我在一个文件流转换程序中也碰到DELPHI对STRING
到widestring的转换问题。
 
接受答案了.
 
后退
顶部