【问题标题】:Difference between character and byte stream translation to character for characters that can be represented with 1byte对于可以用 1byte 表示的字符,字符和字节流转换为字符之间的区别
【发布时间】:2020-07-21 22:23:57
【问题描述】:

来自 java 文档 Here, 它说:

字符流使用字节流执行物理 I/O,字符流处理字符和字节之间的转换

这是怎么发生的,当字符流类 read()write() bytes(2) 就像字节流类 一样,但是 1 在一个时间,它们都返回整数类型,可以映射到char

  • 假设所有可以用 1byte 编码的字符

  • 除了字节数之外,这里的特殊翻译是什么以及它与字节流转换为字符或处理字符和字符之间的翻译有何不同?字节流的字节?

-

【问题讨论】:

    标签: java stream inputstream reader


    【解决方案1】:
    • 二进制数据:byte, InputStream/OutputStream;
    • 文本(Unicode):String, char(UTF-16 2 字节), Reader/Writer

    这意味着两者之间应该始终使用二进制数据的 Charset 编码进行转换。

    什么是恼人的:

    • InputStream.read() 返回一个 int:一个字节值,或 -1 = 文件结尾。

    在 Windows 下发生的单字节编码具有相同的前 128 个字符,采用纯 7 位 ASCII,StandardCharsets.US_ASCII。但其余 128 个字节(希腊语、俄语、斯洛瓦克语、挪威语等)有所不同。

    Java 决定在内部使用 Unicode,因此所有脚本都可以组合成一个字符串。

    因此总会有转换。并且 String 不应该用于非文本二进制数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-25
      • 2017-01-29
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      • 2015-07-25
      • 2011-03-18
      • 1970-01-01
      相关资源
      最近更新 更多