我目前正在使用UTF-8作为Eclipse中的默认字符集。
" 隥"的字符代码以十进制格式 38565 。我使用http://www.chinese-tools.com/tools/converter-unichar.html转换该字符以获取Unicode格式。
我使用蓝牙通信向LED面板发送数据。我使用OutputStream.write( s )来写出一个信号,这样我的微控制器端就可以检测到信号,从而在LED面板上显示相应的东西,其中 s 是一个字节,范围从0到255。
由于隥的默认字符代码是 38565 ,有可能我可以将其重新分配给另一个号码吗?一个例子是,我将 254 作为代码在我的微控制器端显示出这个字符。
对于Android方面,我必须使用38565,以允许我将该字符输出到EditText。但是当谈到蓝牙通信部分时,如何将该字符重新分配给另一个字节?
蓝牙数据发送代码
outputStream.write(5);
Thread.sleep(500);
//Row 1 Message / Scroll
outputStream.write(0); // To indicate to my MC Side that this is TEXT_MODE.
if(sPrefs.getBoolean("scrollRow1", false))
{
}else
{
outputStream.write(6); // Scrolling of text
}
msg.getBytes();
if(msg.getBytes().length > 0)
{
a = 1;
outputStream.write(msg.getBytes()); //Write the String which is converted to Bytes through the OutputStream of the Bluetooth.
outputStream.write(32); // Indicate the ending of a String.
}
正如您在上面的代码中看到的那样,蓝牙使用Bytes作为其数据类型。 38565超过了字节容量。所以我的想法是,当我在Android应用程序上键入字符时,表示中文字符的键是" 隥"字符代码为38565
<Row>
<Key android:codes="38565"
android:keyIcon="@drawable/chinese1"
android:keyWidth="10%p"
android:keyHeight="4%p"
android:horizontalGap="0.5%p"
android:keyEdgeFlags="left"/>
</Row>
但是当把数据发送到Microcontroller Side时,我打算将密钥代码更改为0到255之间的其他内容。这可能还是我必须制作自己的字符集?我一直试图解决这个问题,并且在过去的几天里,我们无法获得任何参考或帮助。我希望有人可以帮助我,我为我的最后一年项目做这件事。
感谢。
答案 0 :(得分:1)
我正在使用蓝牙通信向LED面板发送数据。
面板的文档应该告诉您使用什么编码将字符转换为字节。如果答案是UTF-8,那么你会发送字节233然后154然后165.如果答案是Windows代码页936,你会发送字节235然后81.很可能答案是别的,可能是ASCII等编码不支持中文字符。
outputStream.write(msg.getBytes());
没有参数的 getBytes
使用计算机的默认编码,这可能与面板使用的编码不匹配。通常,您应该避免在Java中使用默认编码,因为它因机器而异,通常是错误的。喜欢明确指定编码,例如,如果它是UTF-8:
outputStream.write(msg.getBytes("UTF-8"));