解决方案 »
- DataModule中的ADOQuery,DataSetProvider过多,单元中的断点就会失效
- 出售外挂源代码,有意购买者入内。
- 关于开发MIDAS时服务器端返回记录集的问题,要如何实现?
- 请问delphi调用vc的dll如何声明呀.在那块.多谢了
- 日期的问题,送分啦
- 关于D7连接dotNET的Webservice(C#写的) (SoapConnection,HTTPRIO),如何得到数据 的问题
- 谁有Excel数据导入的组件或模块
- 请问用delphi怎样能把access倒入到oracle中,大家多帮忙!
- 谁有 这个THttpCli 控件给小弟一个啊 急用
- 如何用一个程序控制另一个程序?
- 在繁体xp系统里读出来的姓名和地址都带有乱码:‘?’,用了简体转繁体的函数还是一样某些字显示问号。
- 怎样实现程序运行时自动创建文件夹
procedure TForm1.Button1Click(Sender: TObject);
var
MyCardData:IDCardData;
begin
MyCardData.Name:='Someone name';
Caption := MyCardData.Name;
end;
从身份证读出来的是哪种编码?
我不懂是哪种编码。读出来的是一条记录,记录类型上面有定议。运行软件的目标电脑是繁体XP,部份会有乱码。在简体XP上运行则一切正常。
Var
len:integer;
pGBCHTChar: PChar;
pGBCHSChar: PChar;
Begin
pGBCHTChar := PChar(GBStr);
Len := SizeOf(pGBCHTChar);
GetMem(pGBCHSChar, Len + 1);
ZeroMemory(pGBCHSChar, Len + 1); //GB CHS -> GB CHT
LCMapString($804, LCMAP_SIMPLIFIED_CHINESE, pGBCHTChar, -1, pGBCHSChar, 2147483647 ); Result := String(pGBCHSChar);
FreeMem(pGBCHSChar);
End;上面是delphi2009的繁体转简体的函数,哪位有简体转繁体的函数啊?
var
iLen: Integer;
PGBCHSStr: PChar; //GB编码的简体字符
PGBCHTStr: PChar; //GB编码的繁体字符
PUnicodeChar: PWideChar; //Unicode编码的字符
PBIG5Str: PChar; //BIG5编码的字符
begin
PGBCHSStr:=PChar(GB2312Str);
iLen:=MultiByteToWideChar(936,0,PGBCHSStr,-1,nil,0); //计算转换的字符数
GetMem(PGBCHTStr,iLen*2+1); //分配内存
LCMapString($0804,LCMAP_TRADITIONAL_CHINESE,PGBCHSStr,-1,PGBCHTStr,iLen*2); //转换GB码简体到GB码繁体
GetMem(PUnicodeChar,iLen*2); //分配内存
MultiByteToWideChar(936,0,PGBCHTStr,-1,PUnicodeChar,iLen); //转换GB码到Unicode码
iLen:=WideCharToMultiByte(950,0,PUnicodeChar,-1,nil,0,nil,nil);
GetMem(PBIG5Str,iLen);
WideCharToMultiByte(950,0,PUnicodeChar,-1,PBIG5Str,iLen,nil,nil);
Result:=string(PBIG5Str);
FreeMem(PBIG5Str);
FreeMem(PUnicodeChar);
FreeMem(PGBCHTStr);
end;
unit GB2Big5;
interface
uses
SysUtils, Windows;
function Big5StringToGBString(Src : string) : string;
implementation
function StrConv(pszSrc : PChar; cpSrc : UINT; pszDest : PChar; cbDest :
Longint; cpDest : UINT) : Longint;
var
buf : PWideChar;
cwLen : LongInt;
begin
cwLen := MultiByteToWideChar(cpSrc,
0,
pszSrc,
-1,
nil,
0);
GetMem(buf, (cwLen+1) * SizeOf(WideChar));
ZeroMemory(buf, (cwLen+1) * SizeOf(WideChar));
MultiByteToWideChar(cpSrc,
0,
pszSrc,
StrLen(pszSrc),
buf,
cwLen+1);
Result := WideCharToMultiByte(cpDest,
0,
buf,
-1,
pszDest,
cbDest,
nil,
nil);
FreeMem(buf);
end;
function StringConv(const Src : string; cpSrc, cpDest : UINT) : string;
var
buf : PChar;
len : Longint;
begin
len := StrConv(PChar(Src), cpSrc, nil, 0, cpDest);
GetMem(buf, len);
ZeroMemory(buf, len);
StrConv(PChar(Src), cpSrc, buf, len, cpDest);
Result := string(buf);
FreeMem(buf);
end;
function CHTStringToCHSString(Src : string) : string;
var
buf : PChar;
len : Integer;
begin
len := LCMapString($804, // LCID_CHINESE_SIMPLIFIED
LCMAP_SIMPLIFIED_CHINESE,
PChar(Src),
-1,
nil,
0);
GetMem(buf, len);
ZeroMemory(buf, len);
LCMapString($804, // LCID_CHINESE_SIMPLIFIED
LCMAP_SIMPLIFIED_CHINESE,
PChar(Src),
-1,
buf,
len);
Result := string(buf);
FreeMem(buf);
end;
function CHSStringToCHTString(Src : string) : string;
var
buf : PChar;
len : Integer;
begin
len := LCMapString($404, // LCID_CHINESE_SIMPLIFIED
LCMAP_TRADITIONAL_CHINESE,
PChar(Src),
-1,
nil,
0);
GetMem(buf, len);
ZeroMemory(buf, len);
LCMapString($404, // LCID_CHINESE_SIMPLIFIED
LCMAP_TRADITIONAL_CHINESE,
PChar(Src),
-1,
buf,
len);
Result := string(buf);
FreeMem(buf);
end;
function CHTToCHS(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;
begin
Result := LCMapString($804, // LCID_CHINESE_SIMPLIFIED
LCMAP_SIMPLIFIED_CHINESE,
pszSrc,
-1,
pszDest,
cbDest);
end;
function CHSToCHT(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;
begin
Result := LCMapString($404, // LCID_CHINESE_SIMPLIFIED
LCMAP_TRADITIONAL_CHINESE,
pszSrc,
-1,
pszDest,
cbDest);
end;
function Big5StringToGBString(Src : string) : string;
begin
Result := CHTStringToCHSString(StringConv(Src, 950, 936));
end;
function Big5ToGB(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;
var
buf : PChar;
len : Integer;
begin
len := StrLen(pszSrc)+1;
GetMem(buf, len*2);
ZeroMemory(buf, len*2);
StrConv(pszSrc, 950, buf, 936, len*2);
Result := CHTToCHS(buf, pszDest, cbDest);
FreeMem(buf);
end;
function GBStringToBig5String(Src : string) : string;
begin
Result := CHSStringToCHTString(StringConv(Src, 936, 950));
end;
function GBToBig5(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;
var
buf : PChar;
len : Integer;
begin
len := StrLen(pszSrc)+1;
GetMem(buf, len*2);
ZeroMemory(buf, len*2);
StrConv(pszSrc, 936, buf, 950, len*2);
Result := CHSToCHT(buf, pszDest, cbDest);
FreeMem(buf);
end;
end.