全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1478
推到 Plurk!
推到 Facebook!

如何將資料庫的中文轉成JSON碼

答題得分者是:sryang
pkz0718
一般會員


發表:4
回覆:7
積分:2
註冊:2013-08-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-08-13 14:44:02 IP:220.130.xxx.xxx 訂閱
目前嘗試了多個方法,目前最大的問題是如何將 中文->JSON的碼  \u53F6\u6625\u5A9A <---例如這個,以下為小弟弄的程式
function TWebModule1.GetAgent3(const sid: string) :TJSONObject;
var
cmd: TDBXCommand;
date_temp : TDBXReader;
begin
Result := TJSONObject.Create;
cmd := dbx4Conn.CreateCommand;
try
cmd.Text := ' select a.id,a.description,b.description as degree,a.pid,a.certif,a.join_Date '
' ,a.bir_date,c.description as sex,a.up_date,a1.description as curr_upid '
' ,a2.description as orig_upid,a.dir_num,a.dir_num2 '
' ,d.description as office, a.addr3,a.addr1,a.email,a.tel_h,a.tel_o,a.m_phone,a.fax '
' from agent a '
' left join code_degree b on a.degree = b.id '
' left join code_sex c on a.sex = c.id '
' left join branch d on a.office = d.id '
' left join agent a1 on a.curr_upid = a1.id '
' left join agent a2 on a.orig_upid = a2.id '
' where a.id = ''' Trim(sid) '''';
date_temp := cmd.ExecuteQuery;
Result := StripMetadata(TDBXJSONTools.TableToJSON(date_temp, 1, true));
finally
cmd.Free;
end;
end;

再麻煩請各位大大指教,謝謝
小弟目前的資料庫為PostgreSQL 那中文的部份目前為簡體中文,謝謝
編輯記錄
pkz0718 重新編輯於 2013-08-13 14:46:10, 註解 無‧
pkz0718
一般會員


發表:4
回覆:7
積分:2
註冊:2013-08-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2013-08-13 15:00:58 IP:220.130.xxx.xxx 訂閱
 小弟另一種寫法為如下:
function TWebModule1.GetAgent2(const sid: string) :String;
var
cmd: TDBXCommand;
date_temp : TDBXReader;
obj,JSON : TJSONObject;
i, cnt : Integer;
begin
obj := TJSONObject.Create;
dbx4Conn := TDBXConnectionFactory.GetConnectionFactory.GetConnection(
'xxx', 'xxx', 'xxx');
if (Assigned(dbx4Conn)) then begin
cmd := dbx4Conn.CreateCommand;
end;
try
cnt := 0;
cmd.Text := ' select a.id,a.description,b.description as degree,a.pid,a.certif,a.join_Date '
' ,a.bir_date,c.description as sex,a.up_date,a1.description as curr_upid '
' ,a2.description as orig_upid,a.dir_num,a.dir_num2 '
' ,d.description as office, a.addr3,a.addr1,a.email,a.tel_h,a.tel_o,a.m_phone,a.fax '
' from agent a '
' left join code_degree b on a.degree = b.id '
' left join code_sex c on a.sex = c.id '
' left join branch d on a.office = d.id '
' left join agent a1 on a.curr_upid = a1.id '
' left join agent a2 on a.orig_upid = a2.id '
' where a.id = ''' Trim(sid) '''';
date_temp := cmd.ExecuteQuery;
while date_temp.Next do begin
Obj := TJSONObject.create;
for i := 0 to date_temp.ColumnCount - 1 do begin
if not date_temp.Value[i].IsNull then begin
Obj.AddPair(date_temp.ValueType[i].Name, date_temp.Value[i].AsString);
end else begin
Obj.AddPair(date_temp.ValueType[i].Name, '');
end;
end;
inc(cnt);
end;
date_temp.Free;
except
raise;
end;
Result := Obj.ToString;
end;
不知哪個方法可以解決 中文轉json格式,謝謝
sryang
尊榮會員


發表:38
回覆:742
積分:876
註冊:2002-06-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2013-08-13 15:07:25 IP:8.35.xxx.xxx 訂閱
s 是一個 UnicodeString

[code delphi]
result := '';
for i := 1 to Length(s) do
begin
c := Ord(s[i]);
if c < 128 then
result := result s[i]
else
result := result Format('\u%0:4.4x', [c]);
end;
[/code]
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
編輯記錄
sryang 重新編輯於 2013-08-13 15:08:32, 註解 無‧
sryang 重新編輯於 2013-08-13 15:19:11, 註解 無‧
sryang 重新編輯於 2013-08-13 15:24:40, 註解 無‧
sryang 重新編輯於 2013-08-13 15:25:56, 註解 無‧
pkz0718
一般會員


發表:4
回覆:7
積分:2
註冊:2013-08-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2013-08-13 15:41:15 IP:220.130.xxx.xxx 訂閱
感謝,可以用了,謝謝。
===================引 用 sryang 文 章===================
s 是一個 UnicodeString

[code delphi]
result := '';
for i := 1 to Length(s) do
begin
c := Ord(s[i]);
if c < 128 then
result := result s[i]
else
result := result Format('\u%0:4.4x', [c]);
end;
[/code]
系統時間:2017-12-14 8:38:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!