我正在编写一个将数据保存到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();
答案 0 :(得分:0)
正如JB Nizet在评论中所提到的,你可以使用charset编码器 并将text / String创建为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);