2014-10-16 151 views
-2

我有字节数组,我要转换为ascii string.but我不知道它是否是ASCII, 我不知道它是否是正确的格式,我使用字节数组转换为ASCII字符串是乱码

org.apache.commons.codec.binary.StringUtils.newStringUsAscii (driveCodeByte); 

但转换的字符串是乱码如下图,所以我能做些什么来转换为正确的格式?

即使我不确定它是ascii或其他编码格式。

enter image description here

+3

什么是“乱码”?我们不知道原始数据是什么,或者您期望的输出。如果你想提供更多的上下文以及样本输入数据和期望的输出数据,这将非常有帮助。 – 2014-10-16 10:57:45

+0

我真的不知道输出内容,我只知道字节数组应该转换为ASCII字符串,但现在我的转换是不正确的,因为它是乱码 – 2014-10-17 01:26:31

+0

我强烈怀疑它是*非* ASCII文本,那么你不应该'实际上将其转换为ASCII。如果你不知道*它最初是文字,你不应该假设它是。你说你“不知道输出内容” - 当然你有一些想法是什么信息。如果你不这样做,你为什么要使用它? – 2014-10-17 05:42:07

回答

2

要将byte[]转换为String和转换编码,你不需要外部框架。

  • 使用String original = new String(myByteArray, myOriginalEncoding)从您的byte[]给出的预期编码得到String
  • 然后,重新初始化一个新String转换为取其编码(这里ASCII):String converted = new String(original.getBytes(myOriginalEncoding), "Cp1252")

注意

必须知道你原来String的编码与解释,即UTF-8,ISO Latin 1等。

+1

'Cpp1252' ...你的意思是'Cp1252'? – Tom 2014-10-16 11:16:13

+0

@Tom哎呀!固定。感谢您的注意。 – Mena 2014-10-16 11:48:23

+0

但我不知道编码,我尝试每一种编码,但它仍然是乱码 – 2014-10-17 01:41:50