当前位置: 首页 > 知识库问答 >
问题:

Java如何将3字节的Unicode字符适合于char类型?

唐运诚
2023-03-14

所以Java中的一个“char”是2个字节。(可以从这里验证。)

我有以下示例代码:

public class FooBar {
    public static void main(String[] args) {
        String foo = "€";
        System.out.println(foo.getBytes().length);
        final char[] chars = foo.toCharArray();
        System.out.println(chars[0]);
    }
}
3
€
File baz = new File("baz.txt");
final DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream(baz));
dataOutputStream.writeChar(chars[0]);
dataOutputStream.flush();
dataOutputStream.close();

编辑2:如果我打开编码为UTF-16 BE的文件“baz.txt”,我将在文本编辑器中看到欧元字符,我想这是有意义的。

共有1个答案

吴安和
2023-03-14

string.getBytes()使用平台的默认字符编码返回字节,这种编码不需要与内部表示形式匹配。

Java在ram中为每个字符使用2个字节,当使用UTF-8对字符进行“序列化”时,它们可能会在结果字节数组中产生一个、两个或三个字节,这就是UTF-8编码的工作方式。

您的代码示例使用的是UTF-8。Java字符串在内存中使用UTF-16编码。不适合单个16位字符的Unicode码点将使用称为代理项对的2字符对进行编码。

查看此链接:java utf8编码-字符,字符串类型

 类似资料:
  • 问题内容: 我正在为我的自定义StringDatatype编写单元测试,并且需要写下4字节的unicode字符。“ \ U”-不起作用(非法转义字符错误),例如:U + 1F701(0xf0 0x9f 0x9c 0x81)。如何将其写成字符串? 问题答案: Unicode代码点不是4个字节。它是整数(目前介于U + 0000到U + 10FFFF之间)。 您的4个字节是(很自然地)其UTF-8编码

  • 问题内容: 我想用Java编写unicode文字U + 10428。 http://www.marathon- studios.com/unicode/U10428/Deseret_Small_Letter_Long_I 我尝试使用“ \ u10428”,但无法编译。 问题答案: 由于Java在人们认为64K足以满足所有人的需求时就采用了全面的unicode(以前在哪听过?),他们从UCS-2开始

  • 想改进这个问题吗?通过编辑这篇文章添加细节并澄清问题。 我有一个特殊字符的输入字符串,如 如果我打印这个字符串,它将返回:正确的。 我想将此字符串转换为特殊字符的Unicode字符串,例如“1a 2\uxx00\uxx01\uxx02......”这样当我打印这个新字符串时,kt也应该给出 我想将其转换为Unicode的原因是我将把它传递给JAVA代码,该代码将把这些Unicode字符写入PDF文

  • 问题内容: 假设我有一个包含Ü的字符串。我将如何找到所有这些unicode字符?我应该测试他们的代码吗?我该怎么做? 例如,给定字符串“AÜXÜ”,我想将其转换为“ AYXY”。我想对其他unicode字符执行相同的操作,并且我不希望将它们存储在某种翻译图中。 问题答案: “ unicode字符”的定义含糊不清,但是将被视为表示标准ISO 8859字符集 未涵盖的UTF-8 字符。如果您的情况是这

  • 以下是在java中使用正则表达式的Boundary Matchers的各种示例。 Sr.No 构造和匹配 1 ^ 一行的开头。 2 $ 一行的结尾。 3 \b 一个单词边界。 4 \B 非字边界。 5 \A 输入的开始。 6 \G 上一场比赛结束。 7 \Z 输入结束但是对于最终终止符,如果有的话。 8 \z 输入结束。

  • 以下是使用java中的正则表达式匹配Unicode字符类的各种示例。 Sr.No 构造和匹配 1 \p{IsLatin} 拉丁文字符。 2 \p{InGreek} 希腊街区的一个角色。 3 \p{Lu} 一个大写字母。 4 \p{IsAlphabetic} 字母字符(二进制属性)。 5 \p{Sc} 货币符号。 6 \P{InGreek} 除希腊街区之外的任何角色。 7 [\p{L}&&[^\p{