作者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)
1F:→ MonyemLi:如果是在linux底下 getbyte预设utf-8,会有三个byte. 07/30 02:54
2F:→ Lordaeron:你的转码问题, 就请自行搞定吧, 原理告诉你了, 实作 07/30 10:06
3F:→ Lordaeron:你就连getbytes的行为反应不去搞清楚,实在是...... 07/30 10:07
4F:→ htx9:歹势,太久没写程式了:p 07/30 11:49