以下例子都会出现乱码, 虽然都可以有变通的方案, 但如果不乱码就太好了!


unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Memo1: TMemo;Button1: TButton;Button2: TButton;Button3: TButton;Button4: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);procedure Button4Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}uses SuperObject;procedure TForm1.Button1Click(Sender: TObject);
varjo: ISuperObject;stream: TStream;
beginstream := TMemoryStream.Create;jo := SO('{"Language" : "简体中文"}');jo.SaveTo(stream, False, False);stream.Position := 0;Memo1.Lines.LoadFromStream(stream); // {"Language":"€S-?}stream.Free;
end;procedure TForm1.Button2Click(Sender: TObject);
constFilePath = 'C:\Temp\Test.txt';
varjo: ISuperObject;
beginjo := SO('{"Language" : "简体中文"}');jo.SaveTo(FilePath, False, False);with TStringList.Create dobeginLoadFromFile(FilePath);ShowMessage(Text);      // {"Language":"€S-?}Free;end;
end;procedure TForm1.Button3Click(Sender: TObject);
varjo: ISuperObject;stream: TStream;
beginstream := TStringStream.Create('{"Language" : "简体中文"}');jo := TSuperObject.ParseStream(stream);ShowMessage(jo.AsJSon(False, False));   // {"Language":"¼òÌåÖÐÎÄ"}stream.Free;
end;procedure TForm1.Button4Click(Sender: TObject);
constFilePath = 'C:\Temp\Test.txt';
varjo: ISuperObject;
beginwith TStringList.Create dobeginAdd('{"Language" : "简体中文"}');SaveToFile(FilePath);Free;end;jo := TSuperObject.ParseFile(FilePath);ShowMessage(jo.AsJSon(False, False));   // {"Language":"¼òÌåÖÐÎÄ"}
end;end.

下面是以上问题的暂时的变通方案:


unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Memo1: TMemo;Button1: TButton;Button2: TButton;Button3: TButton;Button4: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);procedure Button4Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}uses SuperObject;procedure TForm1.Button1Click(Sender: TObject);
varjo: ISuperObject;stream: TStream;
beginstream := TMemoryStream.Create;jo := SO('{"Language" : "简体中文"}');jo.SaveTo(stream, False, True);stream.Position := 0;Memo1.Lines.LoadFromStream(stream); // {"Language":"\u7b80\u4f53\u4e2d\u6587"}stream.Position := 0;jo := TSuperObject.ParseStream(stream);ShowMessage(jo.AsString);           //{"Language" : "简体中文"}stream.Free;
end;procedure TForm1.Button2Click(Sender: TObject);
constFilePath = 'C:\Temp\Test.txt';
varjo: ISuperObject;
beginjo := SO('{"Language" : "简体中文"}');jo.SaveTo(FilePath, False, True);with TStringList.Create dobeginLoadFromFile(FilePath);ShowMessage(Text);      // {"Language":"\u7b80\u4f53\u4e2d\u6587"}Free;end;
end;procedure TForm1.Button3Click(Sender: TObject);
varjo: ISuperObject;stream: TStream;
beginstream := TStringStream.Create('{"Language":"\u7b80\u4f53\u4e2d\u6587"}');jo := TSuperObject.ParseStream(stream);ShowMessage(jo.AsJSon(False, False));   // {"Language" : "简体中文"}stream.Free;
end;procedure TForm1.Button4Click(Sender: TObject);
constFilePath = 'C:\Temp\Test.txt';
varjo: ISuperObject;
beginwith TStringList.Create dobeginAdd('{"Language" : "简体中文"}');SaveToFile(FilePath);Free;end;Memo1.Lines.LoadFromFile(FilePath);jo := SO(Memo1.Text);
//  jo := TSuperObject.ParseFile(FilePath);ShowMessage(jo.AsJSon(False, False));   // {"Language" : "简体中文"}
end;end.

转载于:https://www.cnblogs.com/DaXiong2000/p/4726407.html

XE3随笔8:关于乱码相关推荐

  1. XE3随笔6:SuperObject 的 JSON 对象中还可以包含 方法

    SuperObject 的 JSON 对象中还可以包含 "方法", 这太有意思了; 其方法的格式是: procedure Method(const This, Params: IS ...

  2. XE3随笔18:实例 - 解析 Google 关键字搜索排名

    同上例类似, 通过 'http://clients1.google.cn/complete/search?&q=' + "关键字" 可以获取 Google 的关键字搜索排名 ...

  3. linux查询80端口,Linux 查看 80 端口的占用情况

    lsof -i:端口号 eg: lsof -i:80 lsof -i:21 [root@localhost ~]# lsof -i: COMMAND PID USER FD TYPE DEVICE S ...

  4. 随笔1:Stata乱码处理

    clear /*清除内存,准备数据分析*/ pwd /*查看当前工作路径,尽量把数据集先放进来,否则后面引用数据集名称需要添加路径*/ unicode analyze cfps2014child_20 ...

  5. 数组乱码_python 爬虫随笔-土办法治乱码

    在解析网页时,时常可以看到如下情景: 即在UTF-8编码显示下,网页文字以方块形式出现,防止直接复制. 而网页显示则正常如下: 这种情况下,我们需要的仅仅是数字,则需要找到相应的字体对应规则. 当然, ...

  6. \xe5\x8d\xa0\xe7\x94\xa8\xe3\x80\x82,16进制乱码转化为可读字符

    在解析一些网页数据或者查看服务器日志的时候总会出现一些没法直接阅读的byte字符串,也没有找到在线的转码工具,那就自己写吧. 其实超级简单... s = '\xe5\x8d\xa0\xe7\x94\x ...

  7. python 乱码 无效_python写入csv中文乱码问题,encoding=’utf-8’无效还是乱码——吕江民·日常随笔...

    今天在处理python写入csv中文乱码问题,尝试各种办法,百思不得其解,网上找到的最常用的办法就是 1. encoding='utf-8':无效 with open('data4.csv', 'a' ...

  8. python csv写入中文_python写入csv中文乱码问题,encoding='utf-8'无效还是乱码——吕江民·日常随笔...

    今天在处理python写入csv中文乱码问题,尝试各种办法,百思不得其解,网上找到的最常用的办法就是 1. encoding='utf-8':无效 with open('data4.csv', 'a' ...

  9. 【Delphi】解决XE3及以上版本中的ClientDataSet的长中文字段名出现乱码的问题【此问题从Delphi 10.3.3开始已解决】

    这个问题起码从Delphi XE3开始就存在,一直到目前最新版本都是这样,而且预计还会长期存在下去.导致这个问题的原因是这个组件和DataSetProvider组件的一些变量从AnsiString改成 ...

最新文章

  1. 解决SQL Server管理器无法连接远程数据库Error: 1326错误
  2. 多模块后带来的问题解决方法 - OSGI原形(.NET)
  3. 数据库分片教程mysql_简述MySQL分片中快速数据迁移
  4. CF-477C(Dreamoon and Strings) DP
  5. 关于android 图像格式问题
  6. Fortran执行语句中的“双冒号” ::
  7. ActiveX控件的另类免费签名法
  8. 使用Stack进行递归
  9. 为什么很多人上班好好的,却选择去创业?
  10. html在线画板代码,html5在线画板
  11. MySQL-两个表关联查询
  12. 阿里云商标注册流程步骤-阿里云商标自助注册申请步骤...
  13. 11.1.5 线程与主线程UI界面交互(友元类)
  14. 第四次作业之四则运算
  15. mongodb java 内嵌文档_MongoDB 内嵌文档
  16. Ruby‘s Adventrue游戏制作笔记(十四)Unity播放游戏音效
  17. 读《苔》有感 付强
  18. java pippo_【Java资源大全】Pippo:Java小型开源Web微框架
  19. html 下拉菜单不能下拉_音乐下拉菜单
  20. tp框架使用easywechat二次开发微信创建菜单失败

热门文章

  1. Pr 入门教程如何改变帧速率和音频通道?
  2. 在 vue3 项目中出现 无法使用 JSX,除非提供了 “--jsx“ 标志 提示的解决办法
  3. 苹果电脑安装双系统教程 (MacOSX 10.9+Win7 双系统)
  4. Java数据结构的实现
  5. ucsi_acpi USBC000:00: PPM init failed
  6. 【快速上手系列】五分钟即可学会的easyUI的简单使用教程
  7. 负电压是怎么产生的原理分析
  8. Java开发Twitter爬虫抓取图片和视频并保存到本地
  9. PDF编辑:Adobe Acrobat X Pro 官方原版下载+中文汉化补丁
  10. Android解决Project needs to be converted to androidx.* dependencies问题