如何将简体字保存到繁体数据库而不会出现乱码?
Client环境:简体系统,写入简体字
Server:SQL Server2000数据库语言,Chinese_Taiwan_Stroke_BIN
现在出现的情况就是 有些字写入数据库后就变成?了
------解决方案--------------------------------------------------------
将数据库中相应的字段类型改为NCHAR,NVARCHAR,用参数传值即可,.NET是Unicode编码不分简繁体...一定要拼字符串在字符串前加上N字头...如N'简体繁體都一樣'...
------解决方案--------------------------------------------------------
问题已经解决了,谢谢。我是用的以下这两个函数进行 写入时 简转繁,读出时 繁转简
function GBCht2Chs(GBStr:String):AnsiString; //繁体转简体
function GBChs2Cht(GBStr:String):AnsiString; //简体转繁体
function GBCht2Chs(GBStr : String): AnsiString;
{进行GBK繁体转简体}
var
Len: Integer;
pGBCHTChar: PChar;
pGBCHSChar: PChar;
begin
pGBCHTChar := PChar(GBStr);
Len := MultiByteToWideChar(936,0,pGBCHTChar,-1,nil,0);
GetMem(pGBCHSChar,Len*2+1);
ZeroMemory(pGBCHSChar,Len*2+1);
//GB CHS -> GB CHT
LCMapString($804,LCMAP_SIMPLIFIED_CHINESE,pGBCHTChar,-1,pGBCHSChar,Len*2);
Result := String(pGBChsChar);
//FreeMem(pGBCHTChar);
FreeMem(pGBCHSChar);
end;
function GBChs2Cht(GBStr : String): AnsiString;
{进行GBK简体转繁体}
var
Len: Integer;
pGBCHTChar: PChar;
pGBCHSChar: PChar;
begin
pGBCHSChar := PChar(GBStr);
Len := MultiByteToWideChar(936,0,pGBCHSChar,-1,nil,0);
GetMem(pGBCHTChar,Len*2+1);
ZeroMemory(pGBCHTChar,Len*2+1);
//GB CHS -> GB CHT
LCMapString($804,LCMAP_TRADITIONAL_CHINESE,pGBCHSChar,-1,pGBCHTChar,Len*2);
Result := String(pGBCHTChar);
FreeMem(pGBCHTChar);
//FreeMem(pGBCHSChar);
end;