SQL簡繁轉換的問題 ( 积分: 100 )

  • 主题发起人 漂流的雲
  • 开始时间

漂流的雲

Unregistered / Unconfirmed
GUEST, unregistred user!
SQL服務器是簡體,客戶端操作系統是繁體
1:在繁體系統程序调用SQL數據先转换成繁體顯示,保存再把繁體转成簡體保存。
2:查詢時把繁體條件轉面簡體後再查詢。

1:目前在繁體系統顯示已沒有問題。但保存有個很怪的問題
為什麼在用SQL插入語句就不能把繁體轉成簡體後保存,
sql.Add('INSERT INTO XDSCB (CB001,CB002,CB003,CB004) VALUES ');
sql.Add('('''+(E1.Text)+''',');
sql.Add(''''+form1.big52gb(e2.Text)+''',');//新增用的是插入,但保存後是亂碼
sql.Add(''''+(COM1.Text)+''','''+(COM2.Text)+''')');
ExecSQL;
而用ADOQuery1;eidt修改
edit;
fieldbyName('CB002').AsString:=form1.big52gb(E2.Text);//修改,重新輸入繁體字,再保存就成了簡體,用的都是big52gb.為什麼會有二個結果。難道是SQL裡不支持這樣轉換
fieldbyName('CB003').AsString:=(COM1.Text);
fieldbyName('CB004').AsString:=(COM2.Text);
Post;
這樣就可以把繁體轉成簡體保存

2:查詢問題。在繁體系統錄入繁體轉成簡體後,存後SQL語句中就是亂碼。所以查詢所有帶繁體的都是錯的。

測試總結:是不是SQL語句中不直接支持繁簡轉換??
不知道大家有沒有遇到,SQL用的是varchar這種字形。不要說用nvarchar。。等。雖然可以保存簡繁同時顯示。但後面查詢同一個字,在數據庫裡就有簡繁二個結果,查詢特不方便.
在線等
 

漂流的雲

Unregistered / Unconfirmed
GUEST, unregistred user!
自己頂~
 
K

kingsonchan

Unregistered / Unconfirmed
GUEST, unregistred user!
要看你是不是转成真正的繁体了。
最简单的查看方法是:如果你在简体系统里,能正确显示繁体字,那么这些不是真正的繁体内码,因为繁体内码的字,在简体系统里应该是乱码的。
 

漂流的雲

Unregistered / Unconfirmed
GUEST, unregistred user!
要看你是不是转成真正的繁体了。
最简单的查看方法是:如果你在简体系统里,能正确显示繁体字,那么这些不是真正的繁体内码,因为繁体内码的字,在简体系统里应该是乱码的。
而用ADOQuery1;eidt修改
edit;
fieldbyName('CB002').AsString:=form1.big52gb(E2.Text);//修改,重新輸入繁體字,再保存就成了簡體,用的都是big52gb.為什麼會有二個結果。難道是SQL裡不支持這樣轉換
fieldbyName('CB003').AsString:=(COM1.Text);
fieldbyName('CB004').AsString:=(COM2.Text);
Post;
這個在簡體服務器上看是簡體的,在繁體系統看是亂碼,所以是真正的轉過來了。但用SQL插入語句就是不行。
 
B

bellhuang

Unregistered / Unconfirmed
GUEST, unregistred user!
我觉得根本就不用转,我们的前端也是繁体,服务器有英文的也有简体的,没有什么问题。如果前端要求看到简体的,再写一个繁体转简体的函数转一下就行了。另外我觉得你的转换函数可能有问题。
 

漂流的雲

Unregistered / Unconfirmed
GUEST, unregistred user!
個人認為服務器共用多種語言還是不好。。
你所說的函數有問題。這個我測試過,應該不至於。估計是ADO控件或SQL語句不支持
 
H

hfqxfx

Unregistered / Unconfirmed
GUEST, unregistred user!
你将
sql.Add(''''+form1.big52gb(e2.Text)+''',');//新增用的是插入,但保存後是亂碼
这个改成
sql.Add(QuotedStr(form1.big52gb(e2.Text)+',');//新增用的是插入,但保存後是亂碼
试一下看
 
顶部