检查数据是否可以使用指定的编码表示

时间:2016-12-02 22:49:44

标签: java encoding character

我正在编写一个将数据保存到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();

1 个答案:

答案 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);