【问题标题】:How to create unicode string from bytearray如何从 bytearray 创建 unicode 字符串
【发布时间】:2019-09-07 18:27:50
【问题描述】:

我必须将一些包含本地化值的字符串保存到字节数组中。

然后我必须从字节数组中重构字符串

我将字符串编码为字节数组,如下所示:

        byte addr = 0x08;
        for (String s : values) {
            char[] dataBytes = s.toCharArray();
            int length = s.length();
            for (int i = 0; i < 4; i++) {
                byte[] buffer = new byte[4];
                for (int j = 0; j < 4; j++) {
                    if(i * 4 + j < length ) {
                        buffer[j] = (byte) Character.codePointAt(dataBytes, i * 4 + j);
                    } else {
                        buffer[j] = (byte) 0;
                    }
                }
                nfcHandler.write(buffer, addr);
                addr++;
                TimeUnit.MILLISECONDS.sleep(10);
            }
        }

如何重构字符串?我试过了

new String(bytes, StandardCharsets.UTF_8);

bytes.toString(); 

但两者都不起作用。

知道如何完成这个吗?

请帮忙..!!!

【问题讨论】:

  • 你自己编码字节有什么原因吗?你不能使用 s.getBytes(Charset charset 进行编码吗?使用 s.getBytes(Charset charset) 和之后的 new String(byte[] bytes, Charset charset) 应该给出相同的字符串。
  • 说实话,现在是货物崇拜。我还在学习安卓编程。我会尝试这种方法:)

标签: java android unicode


【解决方案1】:

您将字节数组解码为String 的方式很好,但是您在编码方面做了太多工作。请改用String.getBytes() 方法:

byte[] buffer = s.getBytes(StandardCharsets.UTF_8);
// use buffer at needed...

【讨论】:

    猜你喜欢
    • 2011-06-27
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    相关资源
    最近更新 更多