2011-03-27 37 views
0

我有一個C++程序,通過FTP將數據通過ASCII模式發送到IBM大型機。我現在通過C#來完成這個任務。將文本文件編碼爲出現在IBM大型機上

當它到達那裏並查看文件看起來像垃圾。

我看不出任何特殊的C++代碼將文件編碼成類似EPCDIC的文件。當C++文件發送時,它們可以正常顯示。我看到的唯一不同是用於換行的\ 015 & \ 012,而C#用的是\ r \ n。

這些字符是否會產生影響,如果有的話,我如何讓我的C#應用​​程序使用\ 015?

我必須做任何特殊的編碼才能看起來好嗎?

回答

3

這聽起來像你應該使用EBCDIC編碼,然後可能在二進制文件中傳輸文本。如果您願意,我可以使用EBCDIC encoding class

注意\015\012\r\n - 他們的字符13和10十進制,只是不同代表他們的方式。如果您認爲C++代碼真的是產生與C#相同的文件,請比較兩個文件,其中應爲在二進制文件編輯器中相同。

+0

你能推薦一個二進制文本編輯器嗎? – Jon 2011-03-27 17:48:46

+0

你的班級不能同時工作。我嘗試將ASCII轉換爲EBSDCI並再次返回,並且他們的ASCII碼是垃圾 – Jon 2011-03-27 18:33:32

+0

這表明您沒有正確使用它。它絕對會*兩種方式。請在代碼失敗的地方顯示一些代碼,或者郵寄給我。 – 2011-03-27 19:03:22

1

在傳輸文件之前,請確保您具有TYPE TEXT而不是TYPE BINARY命令。

0

如果你真的在ASCII模式下發送文件,那麼大型機本身會將其轉換爲EBCDIC(它是接收器製作好的)。

,你在主機端越來越明顯的垃圾,和字符代碼的事實\015\012(它們分別是CRLF)意味着你 ASCII模式轉移。

另外,ISPF編輯器現在可以查看很多版本的ASCII數據集。打開文件並輸入命令source asciilf

第一次呈現將字符從ASCII轉換爲EBCDIC,以便您可以看到它們是什麼,第二次通過並填充「行」,以便用足夠的空間替換換行符標記以達到記錄長度。

當處理混合編碼環境時,這是我進行大量工作的寶貴命令。