關於 dB2K 中文方面的問題: (最後更新日期: 2002/12/11 下午 12:18:35 )
Q1). 解決 dB2K RAD 中文問題:
A1.1). 在 db2k.ini 中加入:
[CommandSettings]
ldriver=DB950TW0
A1.2). 修改 BDE 中的設定:
BDE -> Databases -> ????? (依照所使用的選項而定) -> LANGDRIVER -> 設定為 dbase CHT cp950.
BDE -> Configurage -> Driver 與 Native 中也要跟這修改語系為 dBase CHT cp950.
A1.1). 在 db2k.ini 中加入:
[CommandSettings]
ldriver=DB950TW0
A1.2). 修改 BDE 中的設定:
BDE -> Databases -> ????? (依照所使用的選項而定) -> LANGDRIVER -> 設定為 dbase CHT cp950.
BDE -> Configurage -> Driver 與 Native 中也要跟這修改語系為 dBase CHT cp950.
Q2). 修改 db2k RAD 中顯示字形大小、名稱問題:
在 db2k.ini 中修改(沒有就新增)下列 Session:
[DefaultFonts]
Application=新細明體,10
Controls=新細明體,10
在 db2k.ini 中修改(沒有就新增)下列 Session:
[DefaultFonts]
Application=新細明體,10
Controls=新細明體,10
Q3). 在 db2k 中如何使用 MySQL ??
A3). 先用 ODBC32 建立一個 MySQL DSN:A).控制台 -> ODBC32 -> 使用者資料來源名稱 -> 新增 -> 自己設定一個 DSN -> 例如取名為 ss-MySQL, B).控制台 -> BDE -> Databases -> New 新增一個資料庫連結 -> ODBC DSN 處填入 ss-MySQL ( 就是 ODBC32 設定的 DNS).
C).在 db2k RAD 中的 database 元件上 -> databaseName -> 填入 ss-MySQL -> 這樣子就完成了連結!
A3). 先用 ODBC32 建立一個 MySQL DSN:A).控制台 -> ODBC32 -> 使用者資料來源名稱 -> 新增 -> 自己設定一個 DSN -> 例如取名為 ss-MySQL, B).控制台 -> BDE -> Databases -> New 新增一個資料庫連結 -> ODBC DSN 處填入 ss-MySQL ( 就是 ODBC32 設定的 DNS).
C).在 db2k RAD 中的 database 元件上 -> databaseName -> 填入 ss-MySQL -> 這樣子就完成了連結!
Q4). MySQL 中文字處理問題:
A4). 如果你的 MySQL 是安裝在 Windows 平台的話,在 %Win% 目錄下的 My.ini 檔案中加入下列資料
[mysqld]
A4). 如果你的 MySQL 是安裝在 Windows 平台的話,在 %Win% 目錄下的 My.ini 檔案中加入下列資料
[mysqld]
default-character-set =
big5
[client]
default-character-set =
big5
如果你的 MySQL 安裝在 Linux 平台的話,請抓取 Source 重新編譯,
在編譯時,記得加入一行 --with-charset=big5 <---這行就是重點.
在編譯時,記得加入一行 --with-charset=big5 <---這行就是重點.
Q5). 關於中文字在 db2k 中的問題:
A5). dbase 2000 以後的版本採用 Unicode 編碼方式,所以,您在 db2k 中所使用的「字串」,都是 Unicode,當然,你也可以將非中文字串存入字串變數中,但是,重點在於,如何對這些字串做 DBCS/SBCS 轉換呢?所謂的 DBCS 就是 Double Byte Character Set -> 就是每個中文字或是英文字,都是用 2Bytes 來表示,
Unicode 就是 DBCS 格式,和我們以前所認識的中英文編碼方式不同,
以前,我們所認識的中英文字編碼原則是,A -> Ascii code -> 65, 中 -> Ascii code ->164, 164, 兩 Byte
但是,db2k 採用的是 Unicode/DBCS,所以,上述的資料就不在是單純的 65, 164, 164 ,而變成
A -> 65, 00 中 -> 45, 78
上述方法,你可以用下列方式來驗證:
cStr = "A中文"
? cStr.getByte(0) // 65
? cStr.getByte(1) // 0
? cStr.getByte(2) // 45
? cStr.getByte(3) // 78
? Asc( "A" ) // 65
? Asc( "中" ) // 42148
很奇怪吧?中文字的「中」為何他的 ASCII 會是: 42148 ?
我來說個轉換方法:
原本 '中' 字的 SBCS ASCII Code 為: 164(HiByte)/164(LoByte),
164 * 254 + 164 ( HiByte * 256 + LoByte ) = 42148
? Chr( 42148 ) // '中'
A5). dbase 2000 以後的版本採用 Unicode 編碼方式,所以,您在 db2k 中所使用的「字串」,都是 Unicode,當然,你也可以將非中文字串存入字串變數中,但是,重點在於,如何對這些字串做 DBCS/SBCS 轉換呢?所謂的 DBCS 就是 Double Byte Character Set -> 就是每個中文字或是英文字,都是用 2Bytes 來表示,
Unicode 就是 DBCS 格式,和我們以前所認識的中英文編碼方式不同,
以前,我們所認識的中英文字編碼原則是,A -> Ascii code -> 65, 中 -> Ascii code ->164, 164, 兩 Byte
但是,db2k 採用的是 Unicode/DBCS,所以,上述的資料就不在是單純的 65, 164, 164 ,而變成
A -> 65, 00 中 -> 45, 78
上述方法,你可以用下列方式來驗證:
cStr = "A中文"
? cStr.getByte(0) // 65
? cStr.getByte(1) // 0
? cStr.getByte(2) // 45
? cStr.getByte(3) // 78
? Asc( "A" ) // 65
? Asc( "中" ) // 42148
很奇怪吧?中文字的「中」為何他的 ASCII 會是: 42148 ?
我來說個轉換方法:
原本 '中' 字的 SBCS ASCII Code 為: 164(HiByte)/164(LoByte),
164 * 254 + 164 ( HiByte * 256 + LoByte ) = 42148
? Chr( 42148 ) // '中'
而: SBCS 就是 Single Byte
Character Set ->
就是我們以前所認識的 'A中文' -> ASCII -> 65, 164, 164 在一些 WinAPI 中,有些 API Name 尾部有個 'A',
例如 'GetProFileStringA', 代表著他傳回的資料就是 SBCS 資料,如果我們要取用這些傳回的資料,你就必須將這個資料從 SBCS to DBCS 轉換,這樣子 db2k 才看得懂.
另外,Windows 9x 系統採用的 SBCS 編碼方式,Windows NT 以上的採用 DBCS 編碼方式,這點要特別注意.
就是我們以前所認識的 'A中文' -> ASCII -> 65, 164, 164 在一些 WinAPI 中,有些 API Name 尾部有個 'A',
例如 'GetProFileStringA', 代表著他傳回的資料就是 SBCS 資料,如果我們要取用這些傳回的資料,你就必須將這個資料從 SBCS to DBCS 轉換,這樣子 db2k 才看得懂.
另外,Windows 9x 系統採用的 SBCS 編碼方式,Windows NT 以上的採用 DBCS 編碼方式,這點要特別注意.
沒有留言:
張貼留言