为了将字符串转换为字节,我按以下方式将其转换为字节数组:byte[] nameByteArray = cityName.getBytes();
要进行反向转换,我尝试使用以下代码:String retrievedString = new String(nameByteArray);
但这显然行不通。你应该如何进行反向转换呢?
你原本的城市名中有哪些字符?尝试使用UTF-8版本进行如下操作:
byte[] nameByteArray = cityName.getBytes("UTF-8");
String retrievedString = new String(nameByteArray, "UTF-8");
System.out.print("PTRSP - "); System.out.println(retrievedString);
,总是打印出第一个字符为6。因此,上面的代码输出为:6TRSP - ??Albuquerque
。另外,为什么我在开头得到了??
? - darksky这显然是行不通的。
实际上这就是做法。唯一可能出错的地方是你隐式使用了平台默认编码,这种编码在不同系统之间可能会不同,并且可能无法表示字符串中的所有字符。
解决方案是显式使用能够表示所有字符的编码,例如UTF-8:
byte[] nameByteArray = cityName.getBytes("UTF-8");
String retrievedString = new String(nameByteArray, "UTF-8");
new String()
中,您需要指定charsetname,例如new String(byte[], "utf-8")
。使用与原始字符串相同的字符集。 - Augusto