<大家新年好>请问如何在"繁体"操作系统下转出"简体"的文字的.Txt或.Word文档?现转出的是乱码。 请问如何在"繁体"操作系统下转出"简体"的文字的.Txt或.Word文档? 我通过Big5toGb2转换程序可在delphi中显示简体字,可转出Txt或Word文档,打开后简体字是乱码,请问有没有什么解决办法?谢谢!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 试试这几个函数:{内码转换}function Big5ToGB(BIG5Str : String): AnsiString;{进行big5转GB内码}var Len: Integer; pBIG5Char: PChar; pGBCHSChar: PChar; pGBCHTChar: PChar; pUniCodeChar: PWideChar;begin //String -> PChar pBIG5Char := PChar(BIG5Str); Len := MultiByteToWideChar(950,0,pBIG5Char,-1,nil,0); GetMem(pUniCodeChar,Len*2); ZeroMemory(pUniCodeChar,Len*2); //Big5 -> UniCode MultiByteToWideChar(950,0,pBIG5Char,-1,pUniCodeChar,Len); Len := WideCharToMultiByte(936,0,pUniCodeChar,-1,nil,0,nil,nil); GetMem(pGBCHTChar,Len*2); GetMem(pGBCHSChar,Len*2); ZeroMemory(pGBCHTChar,Len*2); ZeroMemory(pGBCHSChar,Len*2); //UniCode->GB CHT WideCharToMultiByte(936,0,pUniCodeChar,-1,pGBCHTChar,Len,nil,nil); //GB CHT -> GB CHS LCMapString($804,LCMAP_SIMPLIFIED_CHINESE,pGBCHTChar,-1,pGBCHSChar,Len); Result := String(pGBCHSChar); FreeMem(pGBCHTChar); FreeMem(pGBCHSChar); FreeMem(pUniCodeChar);end;function GBToBig5(GBStr : String): AnsiString;{进行GB转BIG5内码}var Len: Integer; pGBCHTChar: PChar; pGBCHSChar: PChar; pUniCodeChar: PWideChar; pBIG5Char: 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); GetMem(pUniCodeChar,Len*2); ZeroMemory(pUniCodeChar,Len*2); //GB CHT -> UniCode MultiByteToWideChar(936,0,pGBCHTChar,-1,pUniCodeChar,Len*2); Len := WideCharToMultiByte(950,0,pUniCodeChar,-1,nil,0,nil,nil); GetMem(pBIG5Char,Len); ZeroMemory(pBIG5Char,Len); //UniCode -> Big5 WideCharToMultiByte(950,0,pUniCodeChar,-1,pBIG5Char,Len,nil,nil); Result := String(pBIG5Char); FreeMem(pBIG5Char); FreeMem(pGBCHTChar); FreeMem(pUniCodeChar);end;function GBKChtToChs(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 GBKChsToCht(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; 给个参考你http://community.csdn.net/Expert/topic/4150/4150577.xml?temp=.6435968 使用控件删除EXCEL某一行,如何做? 在delphi中如何创建oracle存储过程 请问调试自定义component的技巧 如何把字符串转换成delphi上可以执行的属性 当Edit控件的Enabled属性为False时,Edit的字体颜色怎么控制? 在这种情况下怎样实现登录到服务器 ADO的ADOQuery怪问题 急急急!DELPHI出错? 关于delphi中赋值存在的问题? 请lsx78来接受wai_lf的馈赠 为什么comboBox不能把string作为对象存进去啊?? 如何判断stringgrid中有一行是空行
function Big5ToGB(BIG5Str : String): AnsiString;
{进行big5转GB内码}
var
Len: Integer;
pBIG5Char: PChar;
pGBCHSChar: PChar;
pGBCHTChar: PChar;
pUniCodeChar: PWideChar;
begin
//String -> PChar
pBIG5Char := PChar(BIG5Str);
Len := MultiByteToWideChar(950,0,pBIG5Char,-1,nil,0);
GetMem(pUniCodeChar,Len*2);
ZeroMemory(pUniCodeChar,Len*2);
//Big5 -> UniCode
MultiByteToWideChar(950,0,pBIG5Char,-1,pUniCodeChar,Len);
Len := WideCharToMultiByte(936,0,pUniCodeChar,-1,nil,0,nil,nil);
GetMem(pGBCHTChar,Len*2);
GetMem(pGBCHSChar,Len*2);
ZeroMemory(pGBCHTChar,Len*2);
ZeroMemory(pGBCHSChar,Len*2);
//UniCode->GB CHT
WideCharToMultiByte(936,0,pUniCodeChar,-1,pGBCHTChar,Len,nil,nil);
//GB CHT -> GB CHS
LCMapString($804,LCMAP_SIMPLIFIED_CHINESE,pGBCHTChar,-1,pGBCHSChar,Len);
Result := String(pGBCHSChar);
FreeMem(pGBCHTChar);
FreeMem(pGBCHSChar);
FreeMem(pUniCodeChar);
end;function GBToBig5(GBStr : String): AnsiString;
{进行GB转BIG5内码}
var
Len: Integer;
pGBCHTChar: PChar;
pGBCHSChar: PChar;
pUniCodeChar: PWideChar;
pBIG5Char: 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);
GetMem(pUniCodeChar,Len*2);
ZeroMemory(pUniCodeChar,Len*2);
//GB CHT -> UniCode
MultiByteToWideChar(936,0,pGBCHTChar,-1,pUniCodeChar,Len*2);
Len := WideCharToMultiByte(950,0,pUniCodeChar,-1,nil,0,nil,nil);
GetMem(pBIG5Char,Len);
ZeroMemory(pBIG5Char,Len);
//UniCode -> Big5
WideCharToMultiByte(950,0,pUniCodeChar,-1,pBIG5Char,Len,nil,nil);
Result := String(pBIG5Char);
FreeMem(pBIG5Char);
FreeMem(pGBCHTChar);
FreeMem(pUniCodeChar);
end;function GBKChtToChs(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 GBKChsToCht(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;
http://community.csdn.net/Expert/topic/4150/4150577.xml?temp=.6435968