2017-01-12 95 views
0

我的问题是如果有任何简短的方式来使用标准的Java库函数将字符串转换为字节数组? “字符串”确实有无编码,字符串本身是一个无缘无故的字符串,但这是我得到它的方式。我没有自己编写代码,也无法更改,但我必须处理它。一个标准的String.getBytes()将不起作用,因为有些值总是被“?”取消,并使底层的二进制数据显然无用。从字符串获取原始字节数组

任何想法?

这里的问题与此处基本相同:How do I get a consistent byte representation of strings in C# without manually specifying an encoding?,而不是Java的C#。我搜索了一段时间,但我找不到任何合适的解决方案。

在此先感谢。

+0

如果你可以显示你正在处理的字符串,那么我们可能会提供帮助。另外,如果它没有编码,为什么有些字节被删除。你在运行什么操作系统? –

+0

相关? http://stackoverflow.com/questions/23316755/java-string-getbytes-charsetname-vs-string-getbytes-charset-object –

+0

请分享一个字符串,给出'?'同时转换。 很可能是字符编码的问题,请用'UTF-8'来尝试 –

回答

1

不幸的是,在Java中没有像“没有编码的String”那样的东西。正如documentation说:

一个String表示在UTF-16格式

一个字符串,所以你得到的数据作为String它已被编码和有没有办法解决它的那一刻。

0

在Java中,String是围绕charbyte的数组的封装。此外,字符串是不可变的,因此不允许直接访问底层char[]

最接近的东西直接访问是:

  • 使字符数组的副本
char[] toCharArray() 

这个字符串到一个新的字符数组转换。

  • 索引获得字符
char charAt(int index) 

返回指定索引的char值。