Re: [問題] 處理ANSI色彩

看板java作者 (螞蟻)時間13年前 (2012/07/29 14:03), 編輯推噓0(004)
留言4則, 3人參與, 最新討論串3/3 (看更多)
我還是用不出來呢,幫我解惑一下,例如:(紅色背景是兩段程式差異處) 測試程式:http://users10.jabry.com/jatan1985/Java/TextTransfer.java ====Code Start==== ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] bs = "測".getBytes(); baos.write(ESC); baos.write("[1;33;41m".getBytes()); baos.write(bs); baos.write(ESC); baos.write("[m".getBytes()); String testStr = new String(baos.toByteArray()); // , "big5"); // 複製到剪貼簿 textTransfer.setClipboardContents(testStr); ====Code End==== 產生: 但是: ====Code Start==== ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] bs = "測".getBytes(); baos.write(ESC); baos.write("[1;33;41m".getBytes()); baos.write(bs[0]); baos.write(ESC); baos.write("[;41m".getBytes()); baos.write(bs[1]); baos.write(ESC); baos.write("[m".getBytes()); String testStr = new String(baos.toByteArray()); // , "big5"); // 複製到剪貼簿 textTransfer.setClipboardContents(testStr); ====Code End==== 預期是: 卻產生:?[;41m?[m 也就是bs[0]、bs[1]把後面的ESC吃掉了 是否是因為我忽略了什麼東西!? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.126.229.169 ※ 編輯: htx9 來自: 59.126.229.169 (07/29 14:17)

07/30 02:54, , 1F
如果是在linux底下 getbyte預設utf-8,會有三個byte.
07/30 02:54, 1F

07/30 10:06, , 2F
你的轉碼問題, 就請自行搞定吧, 原理告訴你了, 實作
07/30 10:06, 2F

07/30 10:07, , 3F
你就連getbytes的行為反應不去搞清楚,實在是......
07/30 10:07, 3F

07/30 11:49, , 4F
歹勢,太久沒寫程式了:p
07/30 11:49, 4F
文章代碼(AID): #1G5D9Euc (java)
文章代碼(AID): #1G5D9Euc (java)