DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: tkzcol
今日帖子: 4
在线用户: 1
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2014/3/22 8:04:00
标题:
RTC 乱码的bug 浏览:2674
加入我的收藏
楼主: 最近看了几个RTC的demo;发现好多例子里的中文显示的都有问题;
都是??这样的乱码。

我的环境 XE3 + RTC630 (应该是最新的RTC版本了)

我就是用这个例子测试的:
http://www.2ccc.com/article.asp?articleid=5963
显示的 id=小鸟  是乱码

谁能把这个例子能够正确的显示中文啊
----------------------------------------------
青云论坛
作者:
男 www12345 (风云) ★☆☆☆☆ -
盒子活跃会员
2014/3/22 8:15:01
1楼: 没有630
----------------------------------------------
一卡通专家的中专家www.cnduh.com
作者:
男 star5 (星五) ★☆☆☆☆ -
盒子活跃会员
2014/3/22 8:38:32
2楼: 这不是BUG,是字符编码问题,你需要选择定义正确的编码。
演示只是演示在某个环境下的效果,并不代表所有环境下出的效果是一样的,比如我标明for d7的,你拿xe5去编译,就应该自行处理unicode的问题,这不是bug
此帖子包含附件:
JPEG 图像
大小:295.2K
----------------------------------------------
博客 - http://offeu.com
脚本模型 - http://webpascal.com
需要短信接口的请联系我,可发行业与营销内容。
作者:
男 pengshaomin (我爱编程) ★☆☆☆☆ -
普通会员
2014/3/22 8:42:14
3楼: 6.0已上版本都是unicode,要进行编码
----------------------------------------------
-
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2014/3/22 10:17:13
4楼: 多谢楼上提醒,关键很多demo都出现了中文乱码问题 ,包括RtcDataset出来的也是中文乱码   。我尝试把 rtcstring=string 修改成 ansistring . 把rtcchar=char修改成ansichar.结果确实能正常显示中文了。但是有时会出现长度计算错误等报错。所以不能轻易乱改源代码。官方说了 ,rtc6以后,全部修改成unicode了,所以以前方法要做处理,至于怎么弄,再摸索吧 。有兴趣的朋友可以分享一下自己的实战经验
----------------------------------------------
青云论坛
作者:
男 star5 (星五) ★☆☆☆☆ -
盒子活跃会员
2014/3/22 20:27:59
5楼: 已经说有很清楚了。
----------------------------------------------
博客 - http://offeu.com
脚本模型 - http://webpascal.com
需要短信接口的请联系我,可发行业与营销内容。
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2014/3/22 22:44:59
6楼: star5 能否把你上面这个宝贵的说明的出处贴出来。
我在好好消化一下;

我在官网的 classroom 找了半天,好像没找到;
----------------------------------------------
青云论坛
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2014/3/23 10:01:33
7楼: 我找到了,是安装文件 help 目录下的
Updates_v604_2012Q3.txt

--
网上收集的说明:
使用XE2+RealThinClient6.04的朋友,需要修改rtcDefs.inc文件激活FORCE_ANSI_STRING,才能支持中文。

在2009以上版本下,要支持中文需修改Lib\rtcDefs.inc:

{$DEFINE FORCE_ANSI_STRING}
----------------------------------------------
青云论坛
作者:
男 qingyun (qingyun) ★☆☆☆☆ -
盒子活跃会员
2014/3/23 10:55:13
8楼: 在 Lib\rtcDefs.inc 的187行,发现下面两个开关;

{.$DEFINE FORCE_ANSI_STRING} // set type RtcString = AnsiString ?
{.$DEFINE FORCE_WIDE_STRING} // set type RtcString = WideString ?

因为前面有个点.,所以这两个开关都是关着的;

去掉第一句的点:

把 {.$DEFINE FORCE_ANSI_STRING} 
修改成
{$DEFINE FORCE_ANSI_STRING} 

好像就彻底好了;

不过官方既然默认隐藏掉这个参数,也是有他道理的;

但是我们做项目的,在未深入掌握RTC前,打开FORCE_ANSI_STRING 这个开关是最傻瓜化的方法了;
----------------------------------------------
青云论坛
作者:
男 star5 (星五) ★☆☆☆☆ -
盒子活跃会员
2014/3/23 20:46:15
9楼: 不建议使用ansi模式,建议使用utf8

也就是不建议去设置$DEFINE FORCE_ANSI_STRING
----------------------------------------------
博客 - http://offeu.com
脚本模型 - http://webpascal.com
需要短信接口的请联系我,可发行业与营销内容。
作者:
男 jiansk (jiansk) ★☆☆☆☆ -
盒子活跃会员
2014/6/15 19:03:52
10楼: @start5:
 
  具体怎样用呢,请指教,我返回的是数据集,没打开 ansi 模式,现在中文是乱码,现在具体要怎样做才能正常呢,谢谢
----------------------------------------------
-
作者:
男 eastroads (eastroads) ★☆☆☆☆ -
普通会员
2014/6/17 11:06:15
11楼: 如果要显示汉字,需要用到utf8,输出的时候用UTF8Encode函数即可。
procedure Tfm_Data.RtcDataProvider1DataReceived(Sender: TRtcConnection);
var
  Srv:TRtcDataServer absolute Sender;
  sql:string;
begin
  sql:='网页';
  if Srv.Request.Complete then
      Srv.Write(UTF8Encode(sql));
end;
----------------------------------------------
-
作者:
男 eastroads (eastroads) ★☆☆☆☆ -
普通会员
2014/6/17 11:09:40
12楼: 同样的,如果客户端用idhttp获得返回的字符,也需要解码
,需要用到TStringStream
var
  ajson,AItem: TQJSon;
  i, imax: integer;
  S:String;
  cText:TstringStream;
var
  item: TListViewItem;
  lName, lValue: TLabel;
begin
  cText:=TStringStream.Create('', TEncoding.UTF8);
  IdHTTP1.Get(Edit1.Text, cText);
  ajson := TQJson.Create;
  ajson.AsJson := cText.DataString;
  cText.Free;
end;
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行80.07813毫秒 RSS