【发布时间】:2014-06-08 05:03:25
【问题描述】:
我从 InputStream 接收数据,我有一个 ASCII 字符 11,它是一个垂直制表符。我可以在调试器中看到垂直选项卡 11。一旦我尝试将该字符附加到 StringBuilder,它就会被附加并且长度会增加。
但是,问题是当返回字符串时,ASCII 字符会丢失,但在执行 stringBuilder.toString().toCharArray() 时,可以看到 ASCII 字符 11。
我需要在字符串中看到 ASCII 字符 11。
public static void main(String[] args) {
// Receive data from InputStream
int read = inputStream.read();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append((char) read); // /u000b is ' '
stringBuilder.append("H");
System.out.println(stringBuilder.toString()); // prints H
char[] characters = stringBuilder.toString().toCharArray(); // length 2
}
如何实现?
编辑:
我需要在调试器中查看原始字符串中的 ASCII 字符。例如:
public String getOriginalString() {
return originalString;
}
public String process(String originalString) {
return modifiedString;
}
编辑:
public String buildMessage(InputStream inputStream) throws Exception {
StringBuilder message = null;
if(inputStream != null) {
message = new StringBuilder();
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
int byteRead = bufferedInputStream.read();
while(byteRead != -1) {
char value = (char) byteRead;
message.append(value);
// check how many bytes available
if(bufferedInputStream.available() != 0) {
byteRead = bufferedInputStream.read();
}
else {
// to avoid blocking of data
break;
}
}
}
char[] characters = message.toString().toCharArray(); // returns length 2
return message.toString();
}
public static void main(String[] args) {
String i = buildMessage(inputStream);
char[] characters = i.toCharArray(); // ASCII characters lost
StringBuilder stringBuilder = new StringBuider(i);
char[] characters2 = stringBuilder.toString().toCharArray(); // ASCII characters lost
}
【问题讨论】:
-
发布一个最小但完整的程序来显示问题。
-
这不是一个完整的程序。我无法运行它并重现问题。这是一个,当然不会重现问题:gist.github.com/jnizet/11212992
标签: java ascii stringbuilder