我需要將文本文件從utf8轉換爲cp1251。我不能使用任何第三方軟件。有沒有用COBOL編寫的例程?它是Windows上的Micro Focus Cobol。用於文件編碼轉換的COBOL程序
0
A
回答
5
答:有很多COBOL程序的該書面...
我不知道任何免費的(=開源與自由的實際使用它)的實現,但你可以很容易地把它寫在你的擁有。 只需通過源代碼並將其移動到目標,如果cp1251中沒有可用的符號,則使用'?'管他呢。 這裏唯一的工作是:你需要查找x'80'以上的128個字符......
或者你檢查MF是否有一些特定的擴展名或者你自己寫的。 在SO上沒有「請爲我編碼」,所以你應該顯示你已經試過的東西。
爲了讓你的想法看看的this javascript sample轉換,應該是這樣的(未測試的代碼):
77 utf-8-field PIC X(5000).
77 new-char PIC X.
77 cp1251-field PIC X(5000).
77 utf-8-pos PIC 9(04) COMP-5.
77 cp1251-pos PIC 9(04) COMP-5.
77 utf-8-end PIC 9(04) COMP-5.
MOVE FUNCTION LENGTH (FUNCTION TRIM (utf-8-field TRAILING))
TO utf-8-end
MOVE 1 TO cp1251-pos
PERFORM VARYING utf-8-pos FROM 1 BY 1
UNTIL utf-8-pos = utf-8-end
EVALUATE TRUE
*> normal ASCII character
WHEN utf-8-field (utf-8-pos) < x'80'
MOVE utf-8-field (utf-8-pos) TO new-char
*> UTF-8 in CP1251 range
WHEN utf-8-field (utf-8-pos) < x'04'
*> skip the first byte
ADD 1 TO utf-8-pos
EVALUATE TRUE
WHEN utf-8-pos > utf-8-end
MOVE '?' TO new-char
WHEN utf-8-field (utf-8-pos) = x'51'
MOVE x'B8' TO new-char
WHEN utf-8-field (utf-8-pos) >= x'4F'
MOVE '?' TO new-char
*> alternative: use alphabet conversion here
WHEN utf-8-field (utf-8-pos) = x'01'
MOVE x'A8' TO new-char
WHEN OTHER
MOVE utf-8-field (utf-8-pos) TO new-char
INSPECT new-char CONVERTING x'0203 ...
TO x'B2B2 ...
END-EVALUATE
*> UTF-8 with no CP1251 char
*> Todo: check for other multibyte headers and add the correct
*> number of characters to utf-8-pos
*> WHEN ...
WHEN OTHER
MOVE '?' TO new-char
END-EVALUATE
STRING new-char
DELIMITED BY SIZE
INTO cp1251-field
WITH POINTER cp1251-pos
END-STRING
END-PERFORM
您可能希望定義一個ALPHABET
爲CONVERTING x'0203 ... TO x'B2B3 ...
部分:
SPECIAL-NAMES.
ALPHABET UTF8-PART-2 IS x'01', x'02' THRU x'4F', x'51'.
ALPHABET CP1251 IS x'A8', x'B2' THRU x'FF', x'B8'.
和內EVALUATE
使用
MOVE utf-8-field (utf-8-pos) TO new-char
INSPECT new-char CONVERTING UTF8-PART-2 TO CP1251
0
你看了@CBL_STRING_CONVERT?
相關問題
- 1. COBOL程序不寫文件
- 2. 轉換cs文件編碼
- 3. 轉換文件編碼
- 4. Java文件編碼轉換
- 5. 在iPhone應用程序編碼轉換
- 6. COBOL - 調用程序
- 7. 程序打開COBOL索引文件
- 8. 轉換許多文件的編碼?
- 9. 大文件的編碼轉換
- 10. COBOL DB2程序
- 11. 有COBOL編譯的程序 - 缺少源碼
- 12. JCL用於運行COBOL程序調用子程序
- 13. VSAM到DB2轉換 - COBOL
- 14. 從COBOL轉換到C++
- 15. COBOL到C++數據轉換
- 16. 將Cobol copybook轉換爲XSD
- 17. PHP文件名編碼轉換問題
- 18. 轉換git存儲庫文件編碼
- 19. 從Cobol調用Java程序
- 20. 轉換CSV文件以用於手機程序?
- 21. 轉換用於Windows的Dataflex/PowerFlex程序
- 22. ARM編號轉換程序
- 23. 轉換編碼
- 24. 程序文件中的HEX號碼轉換
- 25. 混亂的編碼類型的文件轉換成可用
- 26. COBOL程序中的邏輯
- 27. 如何使用perl轉換base64編碼的文件?
- 28. 使用stream_filter_append轉換文件數據的編碼
- 29. 轉換應用程序 - 對於Android
- 30. 適用於mac應用程序的編碼插件
這是一個簡單的讀寫程序。然後查看Micro Focus網站上的各種文檔,瞭解如何將Unicode轉換爲代碼頁。 –
「我不能使用任何第三方軟件?」然而,你正在提議編寫另一種工具,這種工具在我看來很像第三方軟件。 –
雖然它可能被視爲第三方,但可以在文本編輯器(如TextPad或NotePad ++或Crimson Editor或...)中打開該文件,並保存爲其他編碼。如果你需要告訴管理員「它是用COBOL編寫的」,那麼「CALL」SYSTEM「USING」a-batchfile-invoking-a-scriptable-editor-with-this-filename「 –