討論區快速選單
知識庫快速選單
網路投保旅行平安險 掌握Salesforce雲端管理秘訣 傑米的攝影旅遊筆記
[ 回上頁 ] [ 討論區發言規則 ]
Informix建立連線與中文亂碼
更改我的閱讀文章字型大小
作者 : dpi(記憶的停泊點)
[ 貼文 4 | 人氣 2067 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/6/11 下午 06:53:03
大家好,小弟應該是第一次在貴寶地發言,還請大家多指教。

是這樣的,最近因為公司需求,需要處理Informix的資料庫內的資料,
如果沒有記錯,他是安裝在UNIX主機上,有點久遠,是7.X版∼

對於資料庫,小弟之前只有粗淺的一點經驗(用過MS SQL,瞭解一點SQL語法)
加上原本比較熟悉C#.Net,故想盡快建立連線,用熟悉的語言開發!

我嘗試了幾天,找了一些文件,但是遇到一些問題遲遲無法解決,
希望能請教這邊的前輩,不吝給小弟一些指教,簡單說明如下∼

狀況一:
安裝SDK3.00版,欲透過內附的.Net Provider與DB建立連線並提取資料。

結果:
連線可以建立,但是要提取資料時(DataAdapter.Fill(DataSet))會出現錯誤,
錯誤訊息沒記錯應該是『Communication Link Failure』,我有持續搜尋這個訊息,
但是沒有找到比較具體的答案,不知道各位有無解法。

-----

狀況二:
同樣版本SDK,改採ODBC。

結果:
連線成功,也能順利提取資料,但是輸出資料時,無論是Console App或Web App,
中文的部分都會變成亂碼,小弟有嘗試更改網頁語系,或者在輸出資料時
以Encoding轉換字串為Bytes進行處理,但是依然多日不見成效。

-----

以上兩點,想請教各位先進,有無經驗可分享,讓小弟參考參考。

因為對岸有相關討論,這兩天我有嘗試其他版本的SDK,但是問題依舊,還是看不到中文,
我也嘗試更改過Setnet32內Enviroment中的CLIENT_LOCALE與DB_LOCALE,
也有在建立ODBC時設定過Client Locale與DataBase Locate參數,但也都沒有改善。

其實小弟不是很瞭解Setnet32與.Net Provider運作上是否有關?
又或者與ODBC是否有關?兩者應該如何設定才對?

先發問到這邊,不好意思,第一次發文救一大堆問題,我覺得我自己都快搞糊塗了。

感謝大家幫忙。
作者 : timber21(哈囉齒齒)
[ 貼文 45 | 人氣 5472 | 評價 430 | 評價/貼文 9.56 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/6/12 下午 10:30:22
請確認 ODBC 設定裡 Environment 標籤下面的設定:

Client Locale: zh_tw.big5
Database Locale: zh_tw.big5 (Informix 資料庫的編碼)
作者 : dpi(記憶的停泊點)
[ 貼文 4 | 人氣 2067 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/6/13 上午 10:03:10
感謝T兄回應,小弟也有在網路上找到您提到的設定,
我自己嘗試的結果如下。

安裝Client SDK 2.90版

建立ODBC之DSN,在其Environment設定中調整設定:

A.
Client Locale設定為en_US.819
Database Locale設定為en_US.819
User Server Database Locale有勾(不勾也測試過,結果一樣)
設定好之後使用Connection內的Apply & Test Connection測試,
得到訊息為『Test connnection was successful』

B.
Client Locale設定為zh_tw.big5
Database Locale設定為zh_tw.big5
User Server Database Locale不勾
設定好之後使用Connection內的Apply & Test Connection測試,
得到訊息為『.... Unable to load locale categories』
(其實在Environment設定好,按套用時,就會收到警告訊息『The database locale on the Environment page is not the same as the database locale of the database』)

C.
Client Locale設定為zh_tw.big5
Database Locale設定為en_US.819
User Server Database Locale有勾(不勾也一樣)
設定好之後使用Connection內的Apply & Test Connection測試,
得到訊息為『Error opening required code-set conversion object file』

------
鑑於以上測試結果,小弟又產生幾點疑問:

1. Client Locale與Database Locale的設定,是在指派server與client的語系(編碼)嗎?

2. 承1,如果是,那麼Database Locale不是本來就應該使用server上的設定(en_US.819)嗎?

3. 有關code-set conversion,應該如何設定才能順利的convert?

4. 我也有看到一篇,該作者提到他有設定Environment內的Translation Library,指定到『$INFORMIXDIR\bin\ig04n304.dll』,我有嘗試這樣設定,但是並沒有什麼突破,也不瞭解這個設定的意義,請教有人知道這個選項的用處嗎?


以上,再麻煩大家集思廣益,感激不盡!
作者 : kunsong(MJ23)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/6/15 下午 04:04:11
有看過這篇嗎? 應該是類似的問題吧,
http://www.programmer-club.com/pc2020v5/forum/ShowSameTitleN.asp?URL=N&board_pc2020=informix&index=8&id=1219&mode=&type_pc2020=sametitleLevel-2

簡單說用.net 要連Informix , driver不是寫的很好, 以及有unicode的問題,
看來將Informix的DB升級(重建)成unicode才是最終解決之道.
若先進有其它的解決方案, 也請提出, 謝謝.
作者 : gkang(kk) Informix優秀好手貼文超過200則
[ 貼文 264 | 人氣 514 | 評價 1340 | 評價/貼文 5.08 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/6/24 下午 05:16:11

>A.
>Client Locale設定為en_US.819
>Database Locale設定為en_US.819
>得到訊息為『Test connnection was successful』

你的 database 是 en_us.819 的, 所以 connect 成功, 但是 819
是 英文字, 在 .net ( or java ) 中是會轉碼的, 會把中文字當成英文字
轉碼後你只會看到"英文"

>
>B.
>Client Locale設定為zh_tw.big5
>Database Locale設定為zh_tw.big5

由 A 知道你的 database 是 英文, 這裡告訴 sdk 說是 中文,
他會判斷你的設定 不符合 db 的設定


>
>C.
>Client Locale設定為zh_tw.big5
>Database Locale設定為en_US.819
>User Server Database Locale有勾(不勾也一樣)
>設定好之後使用Connection內的Apply & Test Connection測試,
>得到訊息為『Error opening required code-set conversion object file』

二個要 locale 要設一樣, 而且和 db 的 locale 也要一樣
>
>2. 承1,如果是,那麼Database Locale不是本來就應該使用server上的設定(en_US.819)嗎?

Yes

建議在建立 database 時就把 client locale 和 db locale 設成中文 ( zh_tw.big5 )
作者 : nsx1827(nsx)
[ 貼文 25 | 人氣 6683 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/5/5 下午 03:48:33
你好呀
我有跟你遇到同樣的問題
只差資料庫是10x
不知此問題是否解決了呢?
作者 : hedge(hedge)
[ 貼文 127 | 人氣 2031 | 評價 290 | 評價/貼文 2.28 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/5/8 上午 09:26:20
可以去 sysmaster 找所有資料庫的 locale :

select * from sysdbslocale

用 dbaccess 就可以了~~

中文 locale 應該是 zh_TW.57352


 板主 : 徵求中
 > Informix 資料庫 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Informix 資料庫 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Informix 資料庫
1 kk 1340 
2 哈囉齒齒 430 
3 hedge 290 
4 Chelonia Mydas 250 
5 Foris 250 
6 wenli 200 
7 old cat 160 
8 大頭 140 
9 chyang 100 
10 sansui 90 
Informix 資料庫
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.0625