在将任何图像转换为数据并后跟JSON时,它会在JSON字符串中添加一些特殊字符。
在 iOS 端(服务器端(
图像 -> NSData -> NSString -> JSON 字符串(此 JSON 字符串( 包含一些特殊字符(
在客户端提取时,它会损坏图像数据,并且该数据未正确解码。
在 Java 端(客户端(
数据 -> 解析为 JSON 字符串 -> 我们得到的图像数据已损坏 -> 无法形成图像
iOS端的代码:
NSData *dataImage = UIImagePNGRepresentation(baseImgView.image);
NSString *stringImage = [dataImage base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
currentImage = stringImage;
进一步创建了一个名为参数的字典,并使用以下方法将其转换为json:
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameter options:NSJSONWritingPrettyPrinted error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
请建议我同样处理这个问题?
在 iOS 端
图像 -> NSData ->Base 64 字符串 -> JSON 字符串(此 JSON 字符串包含 一些特殊字符(
首先,它使用 NSDataBase64Encoding64CharacterLineLength(base 64 编码(转换为 base 64 字符串,然后在转换为 json 的过程中,它使用 NSUTF8StringEncoding (UTF8 编码(。
在java端,我们需要解码utf8字符串编码以及基本编码。import java.util.Base64;
堆栈溢出链接之一(不记得确切的链接(给出了一个想法。代码是这样的:
这里图像是编码字符串。
import java.util.Base64;
try {
// Encode using basic encoder
String base64encodedString=Base64.getEncoder().encodeToString(Image.getBytes("utf-8"));
// System.out.println("Base64 Encoded String (Basic) :" +base64encodedString);
// Decode
byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString);
String replaceableImage = new String(base64decodedBytes, "utf-8");
System.out.println("Original String:" + replaceableImage);
}catch(UnsupportedEncodingException e){
System.out.println("Error :" + e.getMessage());
}