我正在编写一个将数据保存到 UTF8 文本文件的 Java 程序。不过,我还想提供保存到 IBM437 的选项,以便与使用相同类型数据文件的旧程序兼容。
如何检查用户尝试保存的数据是否无法在 IBM437 中表示?目前,文件保存时没有任何提示,但导致不寻常的字符被问号替换。
如果我可以向用户显示 IBM437 不支持他们保存的数据的警告,我会更喜欢它。然后,用户可以选择手动将字符替换为最接近的 ASCII 等效字符。
当前保存代码是:
String encoding = "UTF-8";
if (forceLegacySupport)
{
// Force character encoding to IBM437
encoding = "IBM437";
}
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(saveFile.getAbsoluteFile()), encoding));
IOController.writeFileToDisk(bw);
bw.close();
最佳答案
正如 JB Nizet 在评论中提到的,您可以使用字符集编码器 以及将文本/字符串创建为 UTF-8 只是我的建议:
public static char[] cookie = "HEADER_COOKIE".toCharArray();
byte[] cookieInBytes = new byte[COOKIE_SIZE];
for(int i=0;i<cookie.length;i++)
{
if(i < cookie.length)
cookieInBytes[i] = (byte)cookie[i];
}
String headerStr = new String(cookieInBytes,StandardCharsets.UTF_8);
关于java - 检查数据是否可以用指定的编码表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40942051/