使用我的程序,用户可以在JTextfield中键入文本。文本将保存在一个字符串中(在“strLine1”下面的代码中),并应转换为十进制数字。
因此我使用了getBytes。
bytearray1 = strLine1.getBytes();
这是我的输出代码:
for (int i=0; i<bytearray1.length; i++) {
builder1.append(bytearray1[i]);
if(i != bytearray1.length)
builder1.append("• ");
}
这很有效,但当我输入一些像“ß”或“ö”这样的特殊字符时,我会输出“-33”或“-10”等输出。我读了很多但没有取得成功。
“ß”的结果必须是225和“ö”148,如下页所示: http://www.theasciicode.com.ar/american-standard-code-information-interchange/ascii-codes-table.png
字符在那里列为“扩展ASCII”。
我也尝试了几个字符集,但没有得到正确的结果。
请帮忙。感谢。
答案 0 :(得分:1)
使用toCharArray()
代替getBytes()
。
我将继续学习为什么由你来解决。
答案 1 :(得分:1)
所以我找到了一个适合我的解决方案:
我将其更改为getBytes以下内容:
try {
bytearray1 = strLine1.getBytes("CP858");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
我在这里使用正确的代码页(858)。
这是我的输出:
for (int i=0; i<bytearray1.length; i++) {
builder1.append((int)bytearray1[i] &0xff);
if(i != bytearray1.length)
builder1.append("• ");
}
}
所以&#34;&amp; 0xff&#34;将其从签名转换为无签名。
答案 2 :(得分:0)
好吧,字节不能保存比127更高的数字。没有提到。所以我改成了:
chararray1 = strLine1.toCharArray();
和我的Stringbuilder输出到:
builder1.append((int)chararray1[i]);
但是“ß”是223而不是225.其他字符也是错误的。