delphi页面乱码问题如何解决?
我的delphi页面是ANSI编码mysql数据库全是utf8如何使页面和数据库的编码保持一致?我在页面添加信息到数据库中的中文显示正常但是页面中的中文却是???如何解决...
我的delphi 页面是ANSI编码 mysql数据库全是utf8 如何使页面和数据库的编码保持一致? 我在页面添加信息到数据库中的中文显示正常 但是页面中的中文却是??? 如何解决这个问题
这么麻烦哦 有没有简单点的方法? 展开
这么麻烦哦 有没有简单点的方法? 展开
1个回答
展开全部
你是指网页上还是Delphi上显示乱码,网页上的话也要设置相应页面为UTF8,
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
如果是DELPHI上要显示uft8的话,取出的内容用函数转换下
function unicode2gb( unicodestr:string):string;
var
SourceLength:integer;
DoneLength:integer;
AscNo:integer;
Byte1,Byte2,Byte3:integer;
GbStr:string;
begin
result:='';
if Trim(unicodestr)='' then exit;
SourceLength:=Length(UnicodeStr);
DoneLength:=1;
repeat
AscNo:=ord(UnicodeStr[DoneLength]);
case (AscNo and $E0) of
$E0:begin
Byte1:=(AscNo and $0f) shl 12;
Inc(DoneLength);
if DoneLength>SourceLength then break;
AscNo:=ord(UnicodeStr[DoneLength]);
Byte2:=(AscNo and $3f) shl 6;
Inc(DoneLength);
if DoneLength>SourceLength then break;
AscNo:=ord(UnicodeStr[DoneLength]);
Byte3:=AscNo and $3f;
end;
$C0:begin
Byte1:=(AscNo and $1f) shl 6;
Inc(DoneLength);
if DoneLength>SourceLength then break;
AscNo:=ord(UnicodeStr[DoneLength]);
Byte2:=(AscNo and $3f);
Byte3:=0;
end;
0..$bf:begin
Byte1:=AscNo;
Byte2:=0;
Byte3:=0;
end;
end; //case;
GbStr:=GBStr+widechar(Byte1+Byte2+Byte3);
Inc(DoneLength);
if DoneLength>SourceLength then break;
until DoneLength>SourceLength;
result:=GbStr;
end;
不麻烦呀,函数你复制我上面写的这个就行了。你输出时调用下就行了。比如你Delphi上定义两变量,s1,s2;取的内容先放到一个变量s1上,显示时输出S2,用我的函数调用下就行了,
var
s1,s2 : string;
begin
s2 := unicode2gb(s1);
end;
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
如果是DELPHI上要显示uft8的话,取出的内容用函数转换下
function unicode2gb( unicodestr:string):string;
var
SourceLength:integer;
DoneLength:integer;
AscNo:integer;
Byte1,Byte2,Byte3:integer;
GbStr:string;
begin
result:='';
if Trim(unicodestr)='' then exit;
SourceLength:=Length(UnicodeStr);
DoneLength:=1;
repeat
AscNo:=ord(UnicodeStr[DoneLength]);
case (AscNo and $E0) of
$E0:begin
Byte1:=(AscNo and $0f) shl 12;
Inc(DoneLength);
if DoneLength>SourceLength then break;
AscNo:=ord(UnicodeStr[DoneLength]);
Byte2:=(AscNo and $3f) shl 6;
Inc(DoneLength);
if DoneLength>SourceLength then break;
AscNo:=ord(UnicodeStr[DoneLength]);
Byte3:=AscNo and $3f;
end;
$C0:begin
Byte1:=(AscNo and $1f) shl 6;
Inc(DoneLength);
if DoneLength>SourceLength then break;
AscNo:=ord(UnicodeStr[DoneLength]);
Byte2:=(AscNo and $3f);
Byte3:=0;
end;
0..$bf:begin
Byte1:=AscNo;
Byte2:=0;
Byte3:=0;
end;
end; //case;
GbStr:=GBStr+widechar(Byte1+Byte2+Byte3);
Inc(DoneLength);
if DoneLength>SourceLength then break;
until DoneLength>SourceLength;
result:=GbStr;
end;
不麻烦呀,函数你复制我上面写的这个就行了。你输出时调用下就行了。比如你Delphi上定义两变量,s1,s2;取的内容先放到一个变量s1上,显示时输出S2,用我的函数调用下就行了,
var
s1,s2 : string;
begin
s2 := unicode2gb(s1);
end;
金山毒霸
2024-10-31 广告
2024-10-31 广告
大部分系统错误,是因为某些DLL文件丢失造成的,比如未安装DirectX9或DirectX 9.0组件已损坏、缺少Visual C ++库、未安装.net库。解决方法如下:一、 手动解决方法1、先确定电脑操作系统是多少位的,现在的电脑一般都...
点击进入详情页
本回答由金山毒霸提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询