XE3随笔8:关于乱码
以下例子都会出现乱码, 虽然都可以有变通的方案, 但如果不乱码就太好了!
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; type
TForm1 = 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; var
Form1: TForm1; implementation {$R *.dfm} uses SuperObject; procedure TForm1.Button1Click(Sender: TObject);
var
jo: ISuperObject;
stream: TStream;
begin
stream := TMemoryStream.Create; jo := SO('{"Language" : "简体中文"}');
jo.SaveTo(stream, False, False); stream.Position := ;
Memo1.Lines.LoadFromStream(stream); // {"Language":"€S-?} stream.Free;
end; procedure TForm1.Button2Click(Sender: TObject);
const
FilePath = 'C:\Temp\Test.txt';
var
jo: ISuperObject;
begin
jo := SO('{"Language" : "简体中文"}');
jo.SaveTo(FilePath, False, False); with TStringList.Create do
begin
LoadFromFile(FilePath);
ShowMessage(Text); // {"Language":"€S-?}
Free;
end;
end; procedure TForm1.Button3Click(Sender: TObject);
var
jo: ISuperObject;
stream: TStream;
begin
stream := TStringStream.Create('{"Language" : "简体中文"}'); jo := TSuperObject.ParseStream(stream);
ShowMessage(jo.AsJSon(False, False)); // {"Language":"¼òÌåÖÐÎÄ"} stream.Free;
end; procedure TForm1.Button4Click(Sender: TObject);
const
FilePath = 'C:\Temp\Test.txt';
var
jo: ISuperObject;
begin
with TStringList.Create do
begin
Add('{"Language" : "简体中文"}');
SaveToFile(FilePath);
Free;
end; jo := TSuperObject.ParseFile(FilePath);
ShowMessage(jo.AsJSon(False, False)); // {"Language":"¼òÌåÖÐÎÄ"}
end; end.
下面是以上问题的暂时的变通方案:
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; type
TForm1 = 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; var
Form1: TForm1; implementation {$R *.dfm} uses SuperObject; procedure TForm1.Button1Click(Sender: TObject);
var
jo: ISuperObject;
stream: TStream;
begin
stream := TMemoryStream.Create; jo := SO('{"Language" : "简体中文"}');
jo.SaveTo(stream, False, True); stream.Position := ;
Memo1.Lines.LoadFromStream(stream); // {"Language":"\u7b80\u4f53\u4e2d\u6587"} stream.Position := ;
jo := TSuperObject.ParseStream(stream);
ShowMessage(jo.AsString); //{"Language" : "简体中文"} stream.Free;
end; procedure TForm1.Button2Click(Sender: TObject);
const
FilePath = 'C:\Temp\Test.txt';
var
jo: ISuperObject;
begin
jo := SO('{"Language" : "简体中文"}');
jo.SaveTo(FilePath, False, True); with TStringList.Create do
begin
LoadFromFile(FilePath);
ShowMessage(Text); // {"Language":"\u7b80\u4f53\u4e2d\u6587"}
Free;
end;
end; procedure TForm1.Button3Click(Sender: TObject);
var
jo: ISuperObject;
stream: TStream;
begin
stream := 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);
const
FilePath = 'C:\Temp\Test.txt';
var
jo: ISuperObject;
begin
with TStringList.Create do
begin
Add('{"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.
XE3随笔8:关于乱码的更多相关文章
- XE3随笔20:几个和当前路径相关的新函数
偶然从 SysUtils 里发现了几个路径相关的函数, 以前没见过, 可能是 Delphi XE3 新增的: GetLocaleDirectory(); GetLocaleFile(); Locale ...
- XE3随笔21:系统默认语言与系统支持的语言列表
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...
- XE3随笔18:实例 - 解析 Google 关键字搜索排名
同上例类似, 通过 'http://clients1.google.cn/complete/search?&q=' + "关键字" 可以获取 Google 的关键字搜索排名 ...
- XE3随笔19:实例 - 借用 Google 实现全文翻译
调用 Google 翻译的地址格式: http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" + ...
- XE3随笔17:实例 - 模拟 Google 搜索
本例测试效果图: 代码文件: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics ...
- XE3随笔16:将字符串转换成 UTF8 编码的函数
这种转换一般用于网页地址; 我不知道 Delphi 是不是有现成的函数, 用到了就写了一个. //函数: function ToUTF8Encode(str: string): string; var ...
- XE3随笔15:使用 IXMLHTTPRequest 简单获取网页源代码
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...
- XE3随笔15:从XML中解析
SuperObject 文件包中还有一个 SuperXmlParser 单元, 可以从 XML 中解析出 ISuperObject. SuperXmlParser 只有三个函数: XMLParseSt ...
- XE3随笔12:TSuperTableString、TSuperAvlEntry
通过 ISuperObject.AsObject 可获取一个 TSuperTableString 对象. TSuperTableString 的常用属性: count.GetNames.GetValu ...
随机推荐
- 【转】CSS深入理解流体特性和BFC特性下多栏自适应布局
这篇文章发布于 2015年02月12日,星期四,23:36,归类于 css相关. 阅读 30873 次, 今日 63 次 by zhangxinxu from http://www.zhangxinx ...
- iOS8通讯录之联系人增删查,多号码增删操作
#import <AddressBook/AddressBook.h> #pragma mark 删除一个号码 - (void)deleteLocalMarkSuccess:(void(^ ...
- [IIS]IIS扫盲(七)
(4)汉化补丁 许多软件都是英文版本的,国人的英语水平普遍不高,包括笔者.因为这个,影响了不少人学习电脑的兴趣. 为了占领市场,软件开发商提供了中文版本:为了大家学习方便,爱好汉化工作的国人制作了汉化 ...
- 性能测试框架Locust初学笔记
Locust初探 Locust是一款类似于Jmeter开源负载测试工具,所不同的是它是用python实现,并支持python脚本. locust提供web ui界面,能够方便用户实时监控脚本运行状态. ...
- C#的 is 和 as 类型转换
C#在操作类型转换时,提供了 as 和 is , 显式,隐式类型转换,由于显式和隐式类型转换比较容易理解,这里主要介绍下 is 和 as 的转换. 1. is 转换 is 操作符指定一个对象类型 ...
- asp.net中选择数字时,另外的数字同时发生变化(适用dev控件)
关键: <ClientSideEvents ValueChanged="AgioChanged" /> <div class="col-sm-4 ...
- 基于mini2440的boa服务器移植
win7 系统 开发板:mini2440 虚拟机:ubuntu12.04 准备工作:确保主机与开发板之间能够正常通信,即能够ping通,具体的操作课参考我上一篇随笔. 1.首先从 http://ww ...
- Python自动化 【第九篇】:Python基础-线程、进程及python GIL全局解释器锁
本节内容: 进程与线程区别 线程 a) 语法 b) join c) 线程锁之Lock\Rlock\信号量 d) 将线程变为守护进程 e) Event事件 f) queue队列 g) 生 ...
- 编程范式 epesode7,8 stack存放指针类型and heap,register
这一节从后往前写. ____stack and heap ___stack由 汇编语言操控管理,数据先入后出. 栈是存放局部变量,函数调用子函数时,该函数在栈中占用的空间会增大,用于存放子函数的局部变 ...
- Allegro学习(http://www.asmyword.com/forum.php?mod=forumdisplay&fid=86)
一.资源 1.网站推荐www.eda365.com,里面有很多有用的东西:当然还有官方代理商的网站http://www.pspice.com.cn/: 2.视频教程:有库源电气的视频教程,还有在www ...