VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

這是Unicode的問題對嗎?不是說VFP可以【處理】?Unicode(不是顯示)!
前往頁面 上一頁  1, 2
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
LiuRambo



註冊時間: 2007-11-27
文章: 481


第 16 樓

發表發表於: 星期四 四月 15, 2010 4:14 pm    文章主題: 引言回覆

前綴字 = CHR(39)
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 17 樓

發表發表於: 星期三 四月 13, 2011 7:02 pm    文章主題: 引言回覆

syntech 寫到:
SYS(3101,65001)也就是在vfp form中顯示unicode文字是可行的.

不過也還是得解決資料儲存及儲存後拿出來顯示的問題.

順便再說一句,
CODEPAGE 65001 並非VFP所有版本所認可的CODEPAGE,
所以你無法使用 CPDBF,CPCONVERT,......等函式硬轉.



補充說明.

DBF 確實可以儲存 UTF-8 的資料,而不會變質,
所以問題只有顯示而已,

可以用來顯示及編輯的GRID,
我試過網路上比較容易取得的是
1.Data Dynamics SharpGrid v.2.0.0.1008 (最新版已不再出售)
2.ComponentOne Studio for ActiveX 中的 VSFlexGrid Pro 8.0.(同系列有 TRUE DBGRID ,不過無法顯示UNICODE)

雖然有可以連接ADO的版本,
不過誠心建議不要使用.
因為同步更新有問題.
所以建議以直接填值到GRID中的方式處理,
當然你得自己處理怎麼把TABLE(CURSOR) <=> GRID.CELL(COL,ROW).VALUE
(GRID.CELL(COL,ROW).VALUE 這不是真正的CODE,只是表示是某一格的內容)

加入 SYS(3101,65001) 之後,
而你也已知DBF的資料確實是UTF-8 的編碼後,
你就可以利用 THISFORM.GRID.CELL(COL,ROW).VALUE = TABLE.FIELD1 直接顯示UTF-8 的資料.


報表部分,
因為VFP 9 的報表引擎仍然無法轉換,所以還是需要利用其他工具來做,例如EXCEL等

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2157


第 18 樓

發表發表於: 星期三 四月 13, 2011 8:15 pm    文章主題: 引言回覆

引言回覆:
所以建議以直接填值到GRID中的方式處理,
當然你得自己處理怎麼把TABLE(CURSOR) <=> GRID.CELL(COL,ROW).VALUE


如果資料筆數很多的話,
一次就將資料全部填入grid.cell 會很慢,
最好能做到只填入顯示畫面裡的資料,
Data Dynamics SharpGrid 或 VSFlexGrid Pro 8.0 有這樣的功能嗎?
至少要有偵測將要超出顯示範圍的功能才行.

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 19 樓

發表發表於: 星期三 四月 13, 2011 9:17 pm    文章主題: 引言回覆

garfield 寫到:
引言回覆:
所以建議以直接填值到GRID中的方式處理,
當然你得自己處理怎麼把TABLE(CURSOR) <=> GRID.CELL(COL,ROW).VALUE


如果資料筆數很多的話,
一次就將資料全部填入grid.cell 會很慢,
最好能做到只填入顯示畫面裡的資料,
Data Dynamics SharpGrid 或 VSFlexGrid Pro 8.0 有這樣的功能嗎?
至少要有偵測將要超出顯示範圍的功能才行.




就算是筆數不多,也可以很明顯的出現Refresh 畫面的感覺........ Orz


目前我測試 VSFlexGrid Pro 8.0 是可以定COL, ROW共幾筆,
但是這樣做手續會繁雜許多.
例如: ROWS = FLOOR(GRID.HEIGHT / GRID.ROWHEIGHT) 之類的,
定義一頁可以顯示幾筆.
而且也需要對home,end,pgup,pgdn自己寫反應.
當然最簡單的就是 rows = reccount(),cols = fcount()

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 20 樓

發表發表於: 星期三 四月 13, 2011 9:45 pm    文章主題: 引言回覆

資料處理方面,連結其他直接支援unicode的資料庫來說,

db server <=> ado + cursoradapter 產生 utf-8 cursor <=> 支援UNICODE物件

這種方式較為簡單.



若以 SPT 連接,為了避免被VFP誤譯為 DBCS 字串,變成要型態轉來轉去,反而痛苦.



但是以cursoradapter連接也會出現與 SPT CURSOR相同的問題,
例如不能簡單的做 ALTER TABLE,INDEX ON,REINDEX,.....等等變更CURSOR結構的操作.
這個要自己調整作法.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
DennisTsai



註冊時間: 2005-07-26
文章: 176


第 21 樓

發表發表於: 星期五 四月 15, 2011 9:42 pm    文章主題: 引言回覆

看來周兄又有突破了
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 22 樓

發表發表於: 星期六 四月 16, 2011 8:53 pm    文章主題: 引言回覆

把結論整理一下.
不知道有沒有機會放一個 簡單到不能再簡單的範例.



老實說,真的沒有那麼可怕.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
catfish



註冊時間: 2003-05-29
文章: 45
來自: 台中

第 23 樓

發表發表於: 星期二 十月 04, 2011 5:34 pm    文章主題: 引言回覆

我用VFP9+SQL Server 2005,以SPT方式取資料,如果Server上的欄位比較長(例如nvarchar(300)),轉換到foxpro的欄位是Memo型態,則用Strconv(欄位資料,10)可以成功將罕見字顯示在Microsoft Form2.0的物件上,但如果是長度較短的欄位,轉換出來的型態是一般文字欄位而不是Memo,則用Strconv()轉出來的文字還是一樣會是問號(?),為什麼會有這樣的差別?是文字欄位還要多一道轉換程序嗎?
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 24 樓

發表發表於: 星期三 十月 05, 2011 8:46 am    文章主題: 引言回覆

最好放棄 以SPT 取得UNICODE 資料.

很痛苦.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 25 樓

發表發表於: 星期三 十月 05, 2011 10:10 am    文章主題: 引言回覆

我自己的測試 SPT-UNICODE SAMPLE :

由 SQL SERVER 取回UNICODE資料

代碼:

SYS(3101,65001)

CLOSE TABLES ALL

STORE SQLCONNECT('xxxx','yyyy','zzzz') TO xConnHandle      
IF xConnHandle <= 0
   RETURN
ENDIF

*   避免VFP亂轉,所以取回時先作成ODBC BINARY欄位

STCT = "select CAST(CAST(FIELD_2 as nVarChar(4000)) as VarBinary(8000)) AS FIELD_2,CAST(CAST(FIELD_3 as nVarChar(4000)) as VarBinary(8000)) AS FIELD_3 "
STCT = STCT+" from  TABLE1 "
=SQLEXEC(xConnHandle,STCT,"TABLE1")
SELECT TABLE1

*  內容實際上為UTF-8編碼,所以利用STRCONV(FIELD_2,10)轉回UNICODE字串

SELECT CAST(STRCONV(FIELD_2,10) as M) AS FIELD_2,CAST(STRCONV(FIELD_3,10) as M) AS FIELD_3 FROM TABLE1 INTO CURSOR TABLE2_1

THISFORM.OLEcontrol1.CONTROLSOURCE = 'Field_2'
THISFORM.OLEcontrol2.CONTROLSOURCE = 'Field_3'
THISFORM.OLEcontrol1.Font.Name='Arial Unicode MS'
THISFORM.OLEcontrol2.Font.Name='Tahoma'
THISFORM.OLEcontrol1.Font.Size=18
THISFORM.OLEcontrol2.Font.Size=18
SYS(3101,65001)



當然用來接的THISFORM.OLEcontrol1,THISFORM.OLEcontrol2 是 MS FORMS 2.0 TEXTBOX


寫回SQL (和前面的TABLE無關,純粹表現要轉碼的情況)
代碼:

*** 從unicode字串轉回UTF-8字串

pcSavedDescription =  STRCONV(pcSavedDescription,12)
pcSavedTitle = STRCONV(pcSavedTitle,12)

 
*** 必須先置於 binary欄位中,才可以傳回SQL server.

pcSavedTitle = CREATEBINARY(pcSavedTitle)
pcSavedDescription = CREATEBINARY(pcSavedDescription)


 
*** 回寫到SQL Server�]要轉型回nVarChar (可以接受unicode資料的欄位)

SqlExec([insert into ForeignData (ID,Descript,lDescript) values ] +;
       [(?pcID, CAST(?pcSavedTitle as nVarChar(4000)),] +;
  [CAST(?pcSavedDescription as nVarChar(4000) )  ) ] )


_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 上一頁  1, 2
2頁(共2頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作