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

越南文存入Oracle

尚未結案
u2462
一般會員


發表:3
回覆:7
積分:2
註冊:2002-07-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-25 14:52:47 IP:210.243.xxx.xxx 未訂閱
以越南文輸入文字(Unicode) 並存入Oracle,但讀出時則為Ansi code 請問該如何設定,請幫忙
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-25 15:30:49 IP:61.219.xxx.xxx 未訂閱
引言: 以越南文輸入文字(Unicode) 並存入Oracle,但讀出時則為Ansi code 請問該如何設定,請幫忙
寫入及讀取端之 NLS_LANG (registry HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0/NLS_LANG) 是什麼值 ? 檢查 Oracle DataBase 的 CharacterSet 1. SQL : select * from SYS.NLS_DATABASE_PARAMETERS; 2. Check : NLS_CHARACTERSET='UTF8' ? 如果不是, 就比較頭大 /* Free 和 Create 一樣重要 */
u2462
一般會員


發表:3
回覆:7
積分:2
註冊:2002-07-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-27 08:56:14 IP:210.243.xxx.xxx 未訂閱
NLS_CHARACTERSET='ZHT16BIG5' 不是'UTF8'問題是不是比較不好處理? 現只是需有一欄位需要輸入越南文 那設定該欄位dataType為Nvarchar2是否可行? 謝謝指導?
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-27 14:30:08 IP:61.219.xxx.xxx 未訂閱
u2462 你好 :
你真辛苦, 現在就遇上 UniCode 的問題.
言歸正傳,
1. OS Code Page 950 ( NLS_CHARACTER = 'ZHT16BIG5' or 'ZHT16MSWIN950'), 卻須"硬"送 unicode character,
   據我所知 Oracle NLS ( National Language Support ), "一定"會強制 Translate Character,
   所以我目前用 raw datatype, 以避免 Oracle NLS Translate.  
   (不一定好,參考參考; 好處是可以自行控管 Data CharacterSet, 不用管 Server/Client
    是何種 CharacterSet , 但也喪失方便性)
2. 用 raw datatype, 當然有些不方便, 寫進前/讀出後 都須自行處理 data.
   (還好只是幾個Column)
3. 若用 raw datatype, Oracle  "standard" package 中 "rawtohex" 很好用, 希望有幫助.
   上述之 package 是 build-in, PL/SQL 如:
   select rawtohex([RawColumnName]) from [TableName] where... // return string with Hex Format
4. 你可用 Oracle "utl_raw" package 中 "cast_to_varchar2" 及 "cast_to_raw" function,
   check 目前於 DB Server 中之 Data , 是否正確為 unicode, 如 :
   select utl_raw.cast_to_raw([CharColumnName]) from [TableName] where...
5. 至於 raw data 讀出後, 如何 display ? 據我所知 Delphi 大部分的 VCL, 都不支援 unicode,
   (我想是 unicode 資訊環境尚未完全成熟 Delphi 不想全面跟進)
6. 目前我是用 WebBrowser 藉由 html escape character 如: '窓' // Hex : 7A93
   去 display unicode character.
7. nchar datatype 我實際沒用過, 抱歉無法幫上忙, 據我所知 它是 unicode datatype,
   但因第 1. 點, 所以可能仍會有問題.
8. 天使大大, 可是 unicode 專家, 可以問問他.
/* Free 和 Create 一樣重要 */
u2462
一般會員


發表:3
回覆:7
積分:2
註冊:2002-07-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-03 02:22:11 IP:218.165.xxx.xxx 未訂閱
Mickey真是太謝謝你! 我來進行你所言 等我回音
u2462
一般會員


發表:3
回覆:7
積分:2
註冊:2002-07-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-03 12:05:16 IP:210.243.xxx.xxx 未訂閱
請問以Raw方式存入Oracle 要以何種方式Show出? 另Unicode存入Oracle該如何處理? 請各位大大幫忙
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-03 16:58:37 IP:61.219.xxx.xxx 未訂閱
引言: 請問以Raw方式存入Oracle 要以何種方式Show出?
以 HTML 而言 : 須將 Binary Data format 成 Integer (2 bytes). For Example : '7A93' = 122 X 256 147 = 31379 HTML text : '&#' '31379' ';' Sample Code as following:
PageProducer.HTMLDoc
...
<meta http-equiv="Content-Type" content="text/html; charset=big5">
...
<#test>
...
PageProducer.OnHTMLTag Event
procedure TForm1.PageProducer1HTMLTag(Sender: TObject; Tag: TTag;
  const TagString: String; TagParams: TStrings; var ReplaceText: String);
var i : array of integer;
    sz,code,j : integer;
    v:variant;
begin
  if tagstring='test' then begin
    v := TVarBytesField(Query1.Fields[0]).asvariant;
    sz := Trunc(Sizeof(v)/2);
    SetLength(i,sz);
    i := v;
    replacetext := '';
    for j := 0 to sz - 1 do begin
      code := i[j*2 1]*256   i[j*2];
      replacetext:=replacetext   '&#'  inttostr(code)   ';';
    end;
  end;
end;
引言: 另Unicode存入Oracle該如何處理?
Sample Code as following :
var m : TMemoryStream;
    Buffer : array of Byte;
    Size : LongInt;
begin
   m := TMemoryStream.Create;
   try
     m.LoadFromFile('d:\dum.txt');
     m.Position := 2; // Bybass 2 bytes of Unicode File identifier $FFFE
     Size := m.Size - 2;
     SetLength(Buffer,Size);
     m.Read(Buffer[0],Size);
     with query1 do begin
       append;
       TVarBytesField(fieldbyname('C1')).Value := Buffer;
       post;
     end;
   finally
     m.Free;
   end;
end;
/* Free 和 Create 一樣重要 */ 發表人 - Mickey 於 2003/03/04 09:14:37 發表人 - Mickey 於 2003/03/04 09:17:30 發表人 - Mickey 於 2003/03/04 09:21:33
bookworm
中階會員


發表:63
回覆:161
積分:82
註冊:2002-08-03

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-08 15:07:19 IP:211.76.xxx.xxx 未訂閱
不知道用unicode component會不會比較乾脆? http://home.ccci.org/wolbrink/tnt/delphi_unicode_controls.htm 有空的話試試吧... ======================= 二星級新手,問基礎問題請勿見笑 ^^
系統時間:2024-04-27 8:03:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!