从数据库 (ms_sql )text 类型的内容调入richedit中出现乱码,是什么原因(在98和winme中运行出现)(yu_ykyks)有什么解决的办法!

  • 主题发起人 主题发起人 wangyw_77
  • 开始时间 开始时间
W

wangyw_77

Unregistered / Unconfirmed
GUEST, unregistred user!
从数据库 (ms_sql )text 类型的内容调入richedit中出现乱码,是什么原因(在98和winme中运行出现)(yu_ykyks)有什么解决的办法!急!不知各位有没有遇到这种情况!用的是delphi6开发的(200分)<br />从数据库 (ms_sql )text 类型的内容调入richedit中出现乱码,是什么原因(在98和winme中运行出现)(yu_ykyks)有什么解决的办法!急!不知各位有没有遇到这种情况!用的是delphi6开发的
 
可能和数据库的字符集设置有关。
改用 ISO 8859-1 试试
 
to ning_ning:老大,在哪里改呀?找不到
 
可能你的 richedit 相关的几个 dll 是英文版的,装个中文 Office 再试一下
 
我也遇到过这个问题,后来改RXRICHEDIT情况好一些些,但是仍然不行
再后来用如下搞定:
procedure TLogTabSheet.ShowMsg(strMsg:string;iColor:TColor);
var
// FirstLine:integer;
ScrollMessage:TWMVScroll;
// iStart:integer;
begin
// FirstLine:=SendMessage(rxLog.Handle,EM_GETLINECOUNT,0,0);
//要显示数据
ShowingData:=True;
//设置新数据的显示位置及颜色、字体、大小等等信息
//其中每次强制设置字体及大小可以防止在98系统中出现中文乱码的现象
rxLog.SelStart:=Maxint;
rxLog.SelAttributes.Color:=iColor;
rxLog.SelAttributes.Charset:=GB2312_CHARSET;
rxLog.SelAttributes.Name:='宋体';
rxLog.SelAttributes.Height:=12;
if bAutoScroll then
//取消自动刷新
sendmessage(rxLog.handle,wm_setredraw,0,0);
//加入显示数据
strMsg:=strMsg+#13#10;
sendmessage(rxLog.Handle,EM_REPLACESEL,0,lparam(pchar(strMsg)));
rxLog.SelStart:=Maxint;
if (bAutoScroll) then
begin
//自动滚动,滚动到SB_BOTTOM
windows.setfocus(rxLog.Handle);
ScrollMessage.Msg:=WM_VScroll;
ScrollMessage.ScrollCode:=SB_BOTTOM;
ScrollMessage.Pos:=0;
rxLog.Dispatch(ScrollMessage);
//如果不是NT系统,则滚动后要出现空白显示,再滚动PAGEUP,PAGEDOWN即可
if not bIsNt then
begin
sendmessage(rxLog.Handle,EM_SCROLL,sb_pageup,0);
sendmessage(rxLog.Handle,EM_SCROLL,SB_PAGEDOWN,0);
end;
end
else
begin
//不自动滚动,取消RXLOG的焦点即可
sendmessage(rxLog.Handle,wm_killfocus,rxLog.Parent.Handle,0);
end;
if bAutoScroll then
begin
//允许刷新
sendmessage(rxLog.handle,wm_setredraw,1,0);
//强制刷新
rxLog.Refresh;
end;
//显示数据结束
ShowingData:=False;
end;
 
richedit常出现问题,换memo或RxRichEdit试试。
或richedit.PlainText:=true;
 
这可能两台机器或者和数据库的字符集不同造成的。
另外,建议将从数据库中取出的字符,先show出来看看,
如果是正确的。再将其赋给一个string变量,然后再装入
richedit.这样也许能解决问题。
 
to xiao_min,linsb:两位老大的方法倒能解决乱码的问题,但却不能保存字体的设置。而
用户要求必须把字体的设置也保存下来,有办法嘛?
 
RxRichEdit试过吗?
 
那把用户所选的字体保存下来,
rxLog.SelAttributes.Charset:=GB2312_CHARSET;
rxLog.SelAttributes.Name:='宋体';
rxLog.SelAttributes.Height:=12;
这一段改成参数设置不就行了?
 
to xiao_min:但用户输入的是一篇文章标题和每段文章的字体、大小可能都不一样,如何
保存呀?
to ning_ning:老大,在哪里改数据库的字符集呀?请指教
 
sorry。。还没想到解决方法。。
 
to ting_ting:是在master.syscharsets里面改吗?本来就是iso 8859-1呀?
 
没有更好的办法了吗?或别的解决方案?过两天结束帖子
 
看来我只有想别的办法了。谢谢楼上的诸位
 
多人接受答案了。
 
后退
顶部