我们再给客户安装我们系统的时候,用delphi 开发的插件出现了乱码,经过分析:
1:服务器操作系统是 英文linux
2:数据库是oracle,网也内容没有乱码,不过插件里面读取出来的字段中文名称出现乱码
经过半天的研究,发现传输过来的XML里面内容是utf8,经过解析是可以解析出来,不过最后一些有很多少字符
因为时间因素,所以我们最后决定在字符串里面最后都加上了_pde,经过这样处理,发送过来的数据解析成GBK,正常
解析代码:
function TForm1.GetUTF8ToAnsi1(Str: String): String;
var
Dest:Pchar;
Unic:PWidechar;
NewDest:PwideChar;
Text:String;
begin
try
GetMem(NewDest,1024);
Dest:=PChar(Str);
Utf8toUnicode(NewDest,Dest,1024);
//Text:=Str;
Text:= WideCharToString(NewDest);
Result:=Text;
if pos('_',Text)>0 then
Result:=Copy(Text,1,pos('_',Text)-1)
else
Result:=Text;
finally
FreeMem(NewDest);
end;
end;
虽然程序没问题,不过没有彻底解决,不过也系统能给大家一个思路。
本文地址:http://www.xszlo.com/article/2012-11-12/7498.html,转发请保留这个地址,谢谢
1:服务器操作系统是 英文linux
2:数据库是oracle,网也内容没有乱码,不过插件里面读取出来的字段中文名称出现乱码
经过半天的研究,发现传输过来的XML里面内容是utf8,经过解析是可以解析出来,不过最后一些有很多少字符
因为时间因素,所以我们最后决定在字符串里面最后都加上了_pde,经过这样处理,发送过来的数据解析成GBK,正常
解析代码:
function TForm1.GetUTF8ToAnsi1(Str: String): String;
var
Dest:Pchar;
Unic:PWidechar;
NewDest:PwideChar;
Text:String;
begin
try
GetMem(NewDest,1024);
Dest:=PChar(Str);
Utf8toUnicode(NewDest,Dest,1024);
//Text:=Str;
Text:= WideCharToString(NewDest);
Result:=Text;
if pos('_',Text)>0 then
Result:=Copy(Text,1,pos('_',Text)-1)
else
Result:=Text;
finally
FreeMem(NewDest);
end;
end;
虽然程序没问题,不过没有彻底解决,不过也系统能给大家一个思路。
本文地址:http://www.xszlo.com/article/2012-11-12/7498.html,转发请保留这个地址,谢谢
在使用Delphi开发的插件中遇到中文乱码问题,特别是在服务器操作系统为英文Linux且数据库为Oracle的情况下。通过对XML文件的UTF-8编码进行处理并转换为GBK编码,实现了对中文字符的有效解析。
6308

被折叠的 条评论
为什么被折叠?



