我的应用将信息保存在 TAG_IMAGE_DESCRIPTION 照片的元数据中。 当我必须保存中文字符时,结果是很多“???”。
我的保存代码:
ExifInterface exifInterface = new ExifInterface(filePath);
exifInterface.setAttribute(ExifInterface.TAG_IMAGE_DESCRIPTION, stringToSave);
供阅读
exifInterface.getAttribute(ExifInterface.TAG_IMAGE_DESCRIPTION)
我尝试将字符串转换为UTF-8,但没有任何改变:
//写:
String chineseText = "你好"; // Example
byte[] utf8Bytes = chineseText.getBytes(StandardCharsets.UTF_8);
String chineseString = new String(utf8Bytes, StandardCharsets.UTF_8);
exifInterface.setAttribute(ExifInterface.TAG_IMAGE_DESCRIPTION, chineseString);
// 阅读:
String description = exifInterface.getAttribute(ExifInterface.TAG_IMAGE_DESCRIPTION);
byte[] chineseBytes = description.getBytes(StandardCharsets.UTF_8);
String readChineseString = new String(chineseBytes, StandardCharsets.UTF_8);
解决中文字符显示为“???”的问题在元数据中,考虑这些潜在的解决方案。首先,尝试直接设置和检索字符串值,而不需要手动编码/解码,依靠 ExifInterface 的内部编码处理来保持一致性。此外,确保 ExifInterface 库与元数据的 UTF-8 编码兼容。验证存储图像的文件系统是否支持 UTF-8 编码,因为不兼容的编码可能会导致元数据损坏。尝试使用各种图像来隔离问题,并查阅 ExifInterface 文档或源代码以深入了解编码处理。通过探索这些途径,您可以有效地诊断和解决编码问题。