2013/07/18

VB6 處理 Unicode 以及 x64 OS 支援

因為種種原因需要 所以幫公司改VB6專案的東西  IDE很弱 但畢竟是10年前的東西了

寫好的VB6專案必須放在64bit server 2003 上跑 (原本跑好好的 2003 32bit 陣亡)

原本的症狀是可以轉出檔案成功但是send到遠端主機會失敗

而且轉出成功的檔案某些特殊中文字彙無法顯示


第一個問題觀察到send到遠端主機使用 xmlhttp post VB6原始引用為 MSXML4.0

Google後發現 MSXML4.0不支援 64bit OS

http://support.microsoft.com/kb/936181/zh-tw

MSXML 4.0 不包括 64 位元的剖析器 (Parser),而且只有 64 位元作業系統中的
Microsoft Windows on Windows 64 (WOW) 模式支援 MSXML 4.0。因此,這個安
全性更新沒有 64 位元的 MSXML 4.0 套件。如果要更新 64 位元作業系統 WOW
模式中的 32 位元 MSXML 4.0 剖析器,請安裝 32 位元的 MSXML 4.0 套件。
例如,如果要更新 64 位元英文作業系統,請安裝 Msxml4-KB936181-enu.exe 套件。

http://www.microsoft.com/zh-tw/download/details.aspx?id=3988

此外,它可為 XML over HTTP 提供用戶端及保護伺服器 (Server-Safe) 的元件。
MSXML6 也是第一版提供 64 位元可轉散發套件的 MSXML。

所以更改VB6引用的MSXML為6.0後解決

第二個問題明顯是VB6使用big5的問題,因為原本的機器上有裝難字,但新機器裝不起來

解法是改用 unicode 控制項 --> fm20.dll (MS Form 2.0)

Google了半天發現這棵元件只有在安裝完 office 之後會被自動安裝

但 server 上不可能會有 office 授權 0rz

後來找到 ActiveX Control Pad 可以在安裝時帶入


http://www.vbforums.com/showthread.php?683325-Microsoft-Forms-2-0-Object-Library

http://msdn.microsoft.com/en-us/library/ms968493.aspx

以上,解決問題 打完收工

--

以上問題用 .Net 完全不會碰到...  讓我差點忍不住要用 C# 全部重刻一遍


--
※ 發信站: 批踢踢兔(ptt2.cc)
◆ From: 223.139.17.96

沒有留言:

張貼留言