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 ...
随机推荐
- 在同一个机器上运行两个jboss修改配置
http://blog.sina.com.cn/s/blog_8ebe17aa0101mnft.html 解决办法:修改 \jboss-4.0.4.GA\server\default\conf 目录下 ...
- python的json模块
Python JSON 本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象. 环境配置 在使用 Python 编码或解码 JSON 数据前,我们需要先安装 JSON 模块. ...
- silverlight 鼠标事件处理
托管代码注册鼠标事件 不需要再.xaml中声明注册事件. .xaml <Ellipse Name=" Fill="Orange" Canvas.Top=" ...
- onmouseover和onmouseout的那些事
这篇文章来自一个偶然...以前刚开始学习javascript事件的时候就被一个东西搞得晕头撞向的.就是一对名字很相近的事件.一组是onmouseover()和onmouseout().另一组就是onm ...
- No.2__C#
几经波折——多事之秋的第二周 这周的事情还有点多, 应该已经是上周了确切的说.总的来说,上周的数据结构的学习进行的很顺利.最让自己惊喜的是,居然很快就派上了用场,这也坚定了我学习的信念,极大地鼓舞了我 ...
- 64. ZigZag Conversion
ZigZag Conversion The string "PAYPALISHIRING" is written in a zigzag pattern on a given nu ...
- 关掉apache2服务器日志文件
磁盘空间突然满了,才发现是这个东西占空间.11个G的空间 修改:/etc/apache2/size-available/default <VirtualHost *:80>ServerNa ...
- review过去的10年
本科毕业有10个年头多了,如果对我的博客做一个主题分析,还真能发现一些规律,这里总结一下: 1. 活跃度 本科毕业最后一学期是思维最活跃的阶段,人生面临很多的变化和挑战,心态相对还不错. 从来北京以 ...
- NUGET命令
主题 about_NuGet 简短说明 提供有关 NuGet 程序包管理器命令的信息. 详细说明 本主题介绍 NuGet 程序包管理器命令.NuGet 是一种集成的程序包 管理工具,用于将库和工具添加 ...
- Android--Toast(吐司)的基本使用
1.学习Android开发,不能从单方面的知识去考虑问题,要从全面出发. 2.Toast(吐司) 1.打开eclipse 选择文件存放的位置 点击Dbms,测试是否连接成功(海马模拟器或者夜神模拟器) ...