Java字符串UTF-8将0xFF解码为0xC3BF

新对象

使用OutputStream将某些字节写入文件时,我遇到了一个奇怪的问题。

该问题似乎是由数据的“编码”引起的。

如果我明确地写到输出流

saveFile.write(new byte[]{(byte)0xFF});

它可以正常工作,并且我在十六进制编辑器中看到0xFF。

但是,当我尝试使用字符串执行此操作时,它将不起作用。例子:

scriptData = "some script data thats all text and stuff" + ((char)0xFF) + ((char)0x3B);
saveFile.write(scriptData.getBytes(Charset.forName("UTF-8")));

在我的十六进制编辑器中,我看到文本,然后是0xC3BF,然后是0x3B。为什么0x3B正确写入文件,但0xFF更改为0xC3BF?

我看到了另一个关于此的线程,但是它涉及到PrintStream,而我没有使用AFAIK。

将0xFF写入文件时出现问题

谢谢。

TJ人群

您要求的是等效于字符0xFF的UTF-8(非常明显)。在UTF-8中,字符0xFF表示为两个字节:0xC3和0xBF。如果您不想使用UTF-8编码,请不要使用getBytesUTF-8编码。

请记住,UTF-8不是每个字符一个字节。为了能够表示每个Unicode字符,都需要UTF-8(与所有Unicode转换一样)。这意味着UTF-8中的某些字符长一字节。其他的是两个字节长;还有一些是3个字节长,还有一些是4个字节长。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法在Java中将UTF-8字符串转换并保存到ANSI

错误UnicodeDecodeError:'utf-8'编解码器无法解码位置0的字节0xff:无效的起始字节

使用pyinstaller时出错:UnicodeDecodeError:'utf-8'编解码器无法解码字节0xff

将字符串编码为UTF-8

在Java中从何处获取“ UTF-8”字符串文字?

java utf8编码-char,字符串类型

字符串解码utf-8

Java字符串编码(UTF-8)

Java中的十六进制字符串到UTF-8字符串

如何在Java中为UTF8字符串做子字符串?

在Java / Android中找出UTF-8字符串中的字符数

带有字符串utf8的Java正则表达式

蟒蛇。将转义的utf字符串转换为utf字符串

Utf-8 Java双引号字符串

解码JSON字符串中的UTF-8编码

字符串值解码utf-8

将窄字符串转换为宽字符串时,为什么要用0xFF屏蔽字符?

如何解码“ utf-8”中的字符串?

如何将熊猫混合/混合字节/字符串系列转换/解码为字符串或utf-8

java将'UTF-8'字符串放入java.lang.Object

将字符串从UTF-8解码为Windows1256

字符串编码 (UTF-8) JAVA

解码流中的 utf8 字符串数组

如何将json字符串解码为UTF-8?

Java 正则表达式匹配 UTF-8 字符串(无副本)

将字符串解码为 UTF-8(URL/百分比编码字符串)

将任意 UTF8 字节块解码为字符串是否安全?

如何在 Java 中将 ASCII 值转换为 UTF-8 字符串?9812 -> ♔

错误 UnicodeDecodeError: 'utf-8' 编解码器无法解码位置 0 中的字节 0xff:套接字编程中的无效起始字节