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


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:关于乱码的更多相关文章

  1. XE3随笔20:几个和当前路径相关的新函数

    偶然从 SysUtils 里发现了几个路径相关的函数, 以前没见过, 可能是 Delphi XE3 新增的: GetLocaleDirectory(); GetLocaleFile(); Locale ...

  2. XE3随笔21:系统默认语言与系统支持的语言列表

    unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...

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

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

  4. XE3随笔19:实例 - 借用 Google 实现全文翻译

    调用 Google 翻译的地址格式: http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" + ...

  5. XE3随笔17:实例 - 模拟 Google 搜索

    本例测试效果图: 代码文件: unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics ...

  6. XE3随笔16:将字符串转换成 UTF8 编码的函数

    这种转换一般用于网页地址; 我不知道 Delphi 是不是有现成的函数, 用到了就写了一个. //函数: function ToUTF8Encode(str: string): string; var ...

  7. XE3随笔15:使用 IXMLHTTPRequest 简单获取网页源代码

    unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...

  8. XE3随笔15:从XML中解析

    SuperObject 文件包中还有一个 SuperXmlParser 单元, 可以从 XML 中解析出 ISuperObject. SuperXmlParser 只有三个函数: XMLParseSt ...

  9. XE3随笔12:TSuperTableString、TSuperAvlEntry

    通过 ISuperObject.AsObject 可获取一个 TSuperTableString 对象. TSuperTableString 的常用属性: count.GetNames.GetValu ...

随机推荐

  1. oracle11g安装和基本的使用-转载

    一.测试操作系统和硬件环境是否符合,我使用的是win2008企业版.下面的都是step by step看图就ok了,不再详细解释. 请留意下面的总的设置步骤:--------------------- ...

  2. 如何测试手机上的SOAP客户端

    周四晚上,服务端和客户端的两个同事因为soap接口的问题争论了起来.服务端的同事认为客户端的同事发给服务端的soap消息的xml结构有问题,少了几个xml节点,导致服务器端解析出错.而客户端的同事认为 ...

  3. UDP发送数据测试

    一个合作伙伴说UDP发送数据,A(IP:192.168.1.100 子网掩码255.255.255.0)网段能发数据到B网段,但B(IP:192.168.2.100 子网掩码255.255.255.0 ...

  4. Win32API界面库 - Project wheels 工程基础部分完成

    离上次发博文过去了好久,先是要忙一个机器人的项目,然后就是部门的事情和考试周复习,然后就到了考试周,趁着复习的间隙,拾起了寒假时候抄的界面库,修掉了从前的bug. bug1 控件显示问题 当初抄这个库 ...

  5. 每天一个 Linux 命令(7):mv命令

    mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 1.命令格式: mv [选项] 源文件或目 ...

  6. I2C控制器的Verilog建模之一

    前言:之前申请了ADI公司的一款ADV7181CBSTZ的视频解码芯片,正好原装DE2板子安的是同系列的ADV7181BBSTZ.虽然都是ADV7181的宗出,但是寄存器配置等等还是有些诧异,引脚也不 ...

  7. 剑指Offer:面试题26——复制复杂的链表(java实现)

    问题描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点). 思路1: 1.先复制链表节点,并用next链接起来. 2.然后对每一个结点去修改 ...

  8. HTC ONE里面一个非常奇怪的问题。。。调用kSOAP出错

    也是在某统计网站上看到了我们的APP爆出了这么一个bug: java.lang.NoSuchFieldError: No instance field headerOut of type [Lorg/ ...

  9. web_reg_find()函数的使用

    1.此函数的作用,很显然就是能告之测试人员页面是否显示正确,其意义与价值在我此次支撑平台的性能测试得到了体现. 2.在使用此函数的过程中,遇到了非常郁闷的事情,幸得老大的帮助才得以跳出误区.当在此函数 ...

  10. scp远程复制

    scp 源 目标 -r 复制目录 scp -r  root@ip:/XXX/path  /XXX 注意:复制目录,包括该目录本身,目的地址无需再加该目录