繁体和简体转换乱码,急!!

Description of your first forum.

繁体和简体转换乱码,急!!

帖子wwhnet » 星期三, 2005年6月29日 08:59


各位大虾:
   小弟遇到这样一个问题:就是ERP服务器是用简体的,而各客户端是用繁体的系统,现在我自己用delphi在繁体上编译写报表,查出来只要有汉字的地方就有很多问号,只有个别汉字可以显示出来.若是在简体上做编译,客户端则显示出来的都是乱码.100分不够还可以加,急!!!!!
 
 
 

繁体和简体转换乱码,急!!

帖子cactus123456 » 星期三, 2005年6月29日 12:36


方法一:Windows系统里提供了一个叫ScriptControl的OCX组件
方法二:(引用)
繁简转换
关键字: 繁简转换
我根据VC++改的
在两个操作环境下都测试能过

//*****************************************************
//Function BIG5ToGB
//Para :BIG5 String
//Return : GB  AnsiString
//BIG5 -> UniCode ->GB CHT -> GB CHS
//Function GBToBIG5
//Para : GB String
//Return : BIG5 AnsiString
//GB CHS -> GB CHT -> UniCode -> Big5
//******************************************************

unit UGBBig5Convert;

interface

uses
 SysUtils, Windows, Messages, Classes, Graphics, Controls,
 Forms, Dialogs;

type
 TGBBIG5Convert = class(TObject)
 public
   class function BIG5ToGB(BIG5Str : String): AnsiString;
   class function GBToBIG5(GBStr : String): AnsiString;
 end;
 

implementation

{
******************************** TGBBIG5Convert ********************************
}
class function TGBBIG5Convert.BIG5ToGB(BIG5Str : String): AnsiString;
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);
 ZeroMemory(pUniCodeChar,Len);
 //Big5 -> UniCode
 MultiByteToWideChar(950,0,pBIG5Char,-1,pUniCodeChar,Len);
 
 Len := WideCharToMultiByte(936,0,pUniCodeChar,-1,nil,0,nil,nil);
 
 Try
   GetMem(pGBCHTChar,Len*2);
   ZeroMemory(pGBCHTChar,Len*2);
 
   GetMem(pGBCHSChar,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);
 Finally
   FreeMem(pGBCHTChar);
   FreeMem(pGBCHSChar);
 end;
end;

class function TGBBIG5Convert.GBToBIG5(GBStr : String): AnsiString;
var
 Len: Integer;
 pGBCHTChar: PChar;
 pGBCHSChar: PChar;
 pUniCodeChar: PWideChar;
 pBIG5Char: PChar;
begin
 pGBCHSChar := PChar(GBStr);
 Len := MultiByteToWideChar(936,0,pGBCHSChar,-1,nil,0);
 
 Try
   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);
    Try
       GetMem(pBIG5Char,Len);
       ZeroMemory(pBIG5Char,Len);
       //UniCode -> Big5
       WideCharToMultiByte(950,0,pUniCodeChar,-1,pBIG5Char,Len,nil,nil);
 
       Result := String(pBIG5Char);
    Finally
       FreeMem(pBIG5Char);
    end;
 Finally
   FreeMem(pGBCHTChar);
 end;
end;


end.
 
 
 

繁体和简体转换乱码,急!!

帖子sunyesy » 星期三, 2005年6月29日 13:19


不会吧,你用的是哪一家的ERP ?
我们用的神州数码的。。。简体繁体都正常。。