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

标签 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();

最佳答案

正如 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/

相关文章:

根据字符串中的条件和位置删除字符 - R

java - 如何在干净的 POJO 中表示 JSON 对象?

java - keystore 更改后重新加载 SSLServerSocket,无需关闭并创建新套接字

java - 如何配置MySQL JDBC驱动程序mysql-connector-java-5.1.12?

mysql - 德语的最佳 MySQL 排序规则是什么

xml - 使用 Linux 命令将纯字符串转换为 xml 格式

java - runOnChange=false 但 csv 中的更改给出了校验和错误

encoding - 我可以强制 AWS CLI 使用 UTF 编码吗?

Javascript - 发布按钮未禁用 - 字符计数不起作用

html - 随机 ">"符号出现在 HTML 表格上方