我們有一個用Java編寫的應用程序,它讀取由VB6應用程序生成的一些文本。 問題是:這個VB6應用程序使用一些特殊字符(如ç,ã,á,á)來生成此輸出,我們不知道它是什麼字符集。什麼是默認的VB6字符集?
所以問題是:有沒有VB6使用的默認字符集?這是什麼?
我們有一個用Java編寫的應用程序,它讀取由VB6應用程序生成的一些文本。 問題是:這個VB6應用程序使用一些特殊字符(如ç,ã,á,á)來生成此輸出,我們不知道它是什麼字符集。什麼是默認的VB6字符集?
所以問題是:有沒有VB6使用的默認字符集?這是什麼?
如何將數據從一個傳輸到另一個?通過文件?如果是,那麼它使用機器的默認編碼我不知道Java代碼來得到它,但在C#中的Encoding.Default ...
好,
這裏是我們發現:我們不」 t知道這是因爲我們的VB6應用程序是在命令行上執行的,但實際上它使用的是MS-DOS環境的默認字符集,在我們的例子中是windows-1252。
因此,所有我們要做的就是改變我們的Java代碼是這樣的:
InputStreamReader inputReader = new InputStreamReader(input, "windows-1252");
,它只是工作得很好!
也許這不是因爲MS-DOS環境,而是因爲我們從Microsoft Access數據庫獲取這些數據。就我個人而言,我認爲這是我們問題最可能的解決方案。
MS-DOS在哪裏適合這張圖片? VB6程序無法在MS-DOS下運行。如果你的意思是這是一個完全不同的命令行程序。如果程序正在寫入正在讀取的文件,請注意VB6本地I/O語句使用當前ANSI代碼頁和Unicode(UTF-16LE)之間的轉換來讀取/寫入文本文件。這些文件將具有8位ANSI字符,並且用於翻譯的代碼頁基於當前的區域設置。 MS Access是另一個問題,但如果MDB晚於Jet 3.x格式(引擎類型= 4),則大多數文本應在內部使用UTF-16LE。 – Bob77 2010-01-12 15:43:05
+1給Bob。 Michael Kaplan關於VB6國際化的出色書籍解釋了所有這些令人難以忍受的細節。免費樣本章節解釋了VB6 I/O使用默認代碼頁http://www.i18nwithvb.com/chapters/Chapter06_en.htm輕微niggle - 它可以是16位,例如16位。爲中國人 – MarkJ 2010-01-12 19:22:57
這正是我們正在做的。通過文件。實際上,我們發現的是:因爲它是一個命令行應用程序,它在MS-DOS環境中執行,所以它使用默認字符集(windows-1252),而不是UTF-8或UTF-16。 – 2010-01-12 15:01:25
從未見過vb6 ms dos應用程序!但是「默認編碼」可以從計算機到計算機不同...... – Peter 2010-01-12 17:40:41