2010-03-04 142 views
1

我試圖將文件從二進制轉換爲文本,通過簡單地用十六進制代碼替換每個字符讀通過系統字節的文件字節。例如,字符'c'將被替換爲'63'。VBA - 亞洲區域

我這是在正常的系統工作正常,一個代碼,但它在PC,我需要,因爲它有默認的區域設置爲中國使用它打破了。

我用下面的語句讀取字節 -

ch$ = " " 
Get #f%, , ch$ 

我懷疑有一個問題,當我讀通過字節的文件字節,因爲它跳過某些字節,因爲它們形成複合字符。它可能讀取2個字節,形成一個字節的亞洲字符。因此它形成了比預期大小小得多的文件。

我怎樣才能讀取字節的文件字節?

完整的代碼粘貼在這裏:http://pastebin.com/kjpSnqzV

回答

2

你的懷疑是正確的。 VB文件將automatically converts字符串從PC上的默認代碼頁讀入Unicode。在亞洲代碼頁上,某些字符表示爲多個字節。

我建議你使用一個變量Byte而不是字符串 - 將停止VB過度很有幫助。

Dim ch As Byte 
Get #f%, , ch 

另一個可能的問題與原來的代碼是一些字節序列是對亞洲代碼頁(他們並不代表有效的字符)是非法的。因此,您的代碼可能會遇到某些輸入文件的錯誤,但大概您希望它可以與任何文件一起使用。