C_and_CPP 板


LINE

(為了避免誤導,修正部分內容。) 我正在寫一個處理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看得懂且輸出的編碼格式」即可。 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.160.166.44
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1554991515.A.883.html
1F:推 firejox: 沒正式的,但可以用別人寫好的library 04/12 00:55
2F:→ firejox: 而且unicode補完好像跟unicode沒關係04/12 01:03
我知道所謂的「Unicode補完」其實只是Big5碼的延伸, 但它可以讓使用者看到日文,所以我的程式也必須處理 否則不管是在哪一邊輸入日文,轉成.ans後另外一邊都會看不懂 或是我在考慮…如果能找到表的話,自己寫一個可能比較直接
3F:推 eye5002003: 原來PTT不是用UTF-8喔? 04/12 14:12
應用程式本身要用UTF-8或Unicode都沒差,也好處理 問題在於.ans檔中的色碼,如果要讓色碼如預期顯示在半個字元上,需要額外處理 雖然可以用一些規則來判斷(如UTF-8中2BYTE以上的字元只要中間有色碼就當他是一半) 但最大的問題是PCMan/PHJCI存下的東西不是UTF-8而是Big5-HKSCS 所以如果我的程式不能翻譯HKSCS,交互使用的體驗就會超級糟糕 如果只是要定義一種「文字內容用Unicode編碼,裡面穿插色碼」的格式 那我在程式裡面自己來就可以了,但這個格式也只有我的程式可以打開 目前往自己轉的方向考慮了,反正也不過是for loop的事情,只是要先找到表...... ※ 編輯: kirimaru73 (118.163.84.235), 04/12/2019 17:45:27
4F:推 holishing: PttBBS 本來就是沿用 199x 年的 MapleBBS 程式碼一直修 04/14 01:27
5F:→ holishing: 改到現在阿,要全面用 UTF-8 的話,光是 asciiart 要用 04/14 01:28
6F:→ holishing: 的一字雙色就是很大的問題了 04/14 01:28
※ 編輯: kirimaru73 (118.160.164.40), 04/14/2019 19:42:29







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP