作者htx9 (螞蟻)
看板java
標題Re: [問題] 處理ANSI色彩
時間Sun Jul 29 14:03:54 2012
我還是用不出來呢,幫我解惑一下,例如:(紅色背景是兩段程式差異處)
測試程式:
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)
→ MonyemLi:如果是在linux底下 getbyte預設utf-8,會有三個byte. 07/30 02:54
→ Lordaeron:你的轉碼問題, 就請自行搞定吧, 原理告訴你了, 實作 07/30 10:06
→ Lordaeron:你就連getbytes的行為反應不去搞清楚,實在是...... 07/30 10:07
→ htx9:歹勢,太久沒寫程式了:p 07/30 11:49