[問題] BBS美工圖案檔與Unicode的轉換問題

作者: kirimaru73 (霧丸)   2019-04-11 22:05:09
(為了避免誤導,修正部分內容。)
我正在寫一個處理ANSI檔(.ans)的Windows MFC應用程式,
其目的在於讓使用者能用類似小畫家的方式編輯ANSI美工作品。
目前使用Visual Studio 2017編譯,但並沒有用到任何C#的部分。
由於PCMan支援Unicode補完計畫,要看日文是沒問題的。
但我也不意外地在Unicode、Big5、以及BBS色碼的恩怨情仇中摔了一大跤。
我希望能做到以下兩件事情:
1. 在PCMan的「ANSI編輯」介面中,輸入日文內容。
將檔案存為.ans檔後,在我的程式中打開並編輯。
2. 在我的程式中,輸入日文內容。
將檔案存為.ans檔後,在PCMan的「ANSI編輯」中打開並編輯。
在PCMan的ANSI編輯功能中,如果打入日文字再存檔,會採用Big5編碼。
(很合理,如果用Unicode的話,控制碼會讓你死得很難看)
而我的程式所輸出的.ans檔,也必須採用Big5編碼,否則PCMan也無法讀入。
問題在於,我的程式需要把Big5轉換為Unicode來處理每個字元。
如果只是單純的中英文混合,那用MultiByteToWideChar https://tinyurl.com/y54qkkpd
然後把CodePage設成950就能產生正常的Unicode了。
要把內容寫成Ansi檔,也只是WideCharToMultiByte之類的事情。
碰上日文等不包含在CodePage 950內的符號時,事情就麻煩了。
歷史痕跡告訴我CodePage 951可能有用,但MultiByteToWideChar表示我不認識他。
網路搜尋的結果提到了這個工具:
Microsoft Character Code Conversion Routines For HKSCS-2004
https://www.microsoft.com/en-us/download/details.aspx?id=12080
而點開連結也可以發現它早就被拋棄了,當然茫茫網海中或許還撈的到。
請問包含這些字元的Big5 ←→ Unicode之間的轉換,
在C/C++中有沒有什麼正式的轉換方法,還是我漏掉了什麼重要的環節?
由於這個程式只是要方便他人編輯ANSI檔案,
因此只要能轉換「PCMan看得懂且輸出的編碼格式」即可。
作者: firejox (Tangent)   2019-04-12 00:55:00
沒正式的,但可以用別人寫好的library而且unicode補完好像跟unicode沒關係
作者: eye5002003 (下一夜)   2019-04-12 14:12:00
原來PTT不是用UTF-8喔?
作者: holishing   2019-04-14 01:27:00
PttBBS 本來就是沿用 199x 年的 MapleBBS 程式碼一直修改到現在阿,要全面用 UTF-8 的話,光是 asciiart 要用的一字雙色就是很大的問題了

Links booklink

Contact Us: admin [ a t ] ucptt.com