These days to learn json-superobject, very fortunate to get its author Henri gourvest Master's synchronous guidance! (Master Henri is also the author of Dspack and GDI + header files; The master is French, can reply to me in Chinese, did not think!).
The study found that some places in the superobject of Chinese (or Unicode) support is not expected, now put forward for the master to identify.
The following examples will appear garbled, although all can have a flexible scheme, but if not garbled it is very good!
UnitUnit1;InterfaceusesWindows, Messages, sysutils, variants, Classes, Graphics, Controls, Forms, Dialogs, Stdctrls;typeTForm1 =class(Tform) Memo1:tmemo; Button1:tbutton; Button2:tbutton; Button3:tbutton; Button4:tbutton;procedureButton1Click (Sender:tobject);procedureButton2click (Sender:tobject);procedureButton3click (Sender:tobject);procedureButton4click (Sender:tobject);End;varForm1:tform1;Implementation{$R *.DFM}usesSuperobject;procedureTform1.button1click (Sender:tobject);varJo:isuperobject; Stream:tstream;beginStream: = Tmemorystream.create; JO: = SO (' {' Language ': ' Chinese Simplified '} '); Jo. SaveTo (stream, false, false); Stream. Position: =0; Memo1.Lines.LoadFromStream (stream);//{"Language": "€s-?}Stream. Free;End;procedureTform1.button2click (Sender:tobject);ConstFilePath =' C:\Temp\Test.txt ';varJo:isuperobject;beginJO: = SO (' {' Language ': ' Chinese Simplified '} '); Jo. SaveTo (FilePath, False, false); withTstringlist.create DobeginLoadFromFile (FilePath); ShowMessage (Text);//{"Language": "€s-?}Free;End;End;procedureTform1.button3click (Sender:tobject);varJo:isuperobject; Stream:tstream;beginStream: = Tstringstream.create (' {' Language ': ' Chinese Simplified '} '); JO: = Tsuperobject.parsestream (stream); ShowMessage (Jo. Asjson (False, false));//{"Language": "¼òìåöðîä"}Stream. Free;End;procedureTform1.button4click (Sender:tobject);ConstFilePath =' C:\Temp\Test.txt ';varJo:isuperobject;begin withTstringlist.create DobeginADD (' {' Language ': ' Chinese Simplified '} '); SaveToFile (FilePath); Free;End; JO: = Tsuperobject.parsefile (FilePath); ShowMessage (Jo. Asjson (False, false));//{"Language": "¼òìåöðîä"}End;End.
The following are temporary workarounds for the above issues:
UnitUnit1;InterfaceusesWindows, Messages, sysutils, variants, Classes, Graphics, Controls, Forms, Dialogs, Stdctrls;typeTForm1 =class(Tform) Memo1:tmemo; Button1:tbutton; Button2:tbutton; Button3:tbutton; Button4:tbutton;procedureButton1Click (Sender:tobject);procedureButton2click (Sender:tobject);procedureButton3click (Sender:tobject);procedureButton4click (Sender:tobject);End;varForm1:tform1;Implementation{$R *.DFM}usesSuperobject;procedureTform1.button1click (Sender:tobject);varJo:isuperobject; Stream:tstream;beginStream: = Tmemorystream.create; JO: = SO (' {' Language ': ' Chinese Simplified '} '); 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": "Simplified Chinese"}Stream. Free;End;procedureTform1.button2click (Sender:tobject);ConstFilePath =' C:\Temp\Test.txt ';varJo:isuperobject;beginJO: = SO (' {' Language ': ' Chinese Simplified '} '); Jo. SaveTo (FilePath, False, True); withTstringlist.create DobeginLoadFromFile (FilePath); ShowMessage (Text);//{"Language": "\u7b80\u4f53\u4e2d\u6587"}Free;End;End;procedureTform1.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": "Chinese Simplified"}Stream. Free;End;procedureTform1.button4click (Sender:tobject);ConstFilePath =' C:\Temp\Test.txt ';varJo:isuperobject;begin withTstringlist.create DobeginADD (' {' Language ': ' Chinese Simplified '} '); SaveToFile (FilePath); Free;End; Memo1.Lines.LoadFromFile (FilePath); JO: = SO (Memo1.text);//JO: = Tsuperobject.parsefile (FilePath);ShowMessage (Jo. Asjson (False, false));//{"Language": "Chinese Simplified"}End;End.
JSON Superobject (8): Several cases of garbled characters-report to Henri Gourvest Master