首页 > 解决方案 > 在写入文件之前用等效的 ASCII 替换特殊字符

问题描述

我在尝试编写包含 char µ的 csv 时收到 java.nio.charset.UnmappableCharacterException 。

我需要使用 ASCII 编码编写文件,以便 Excel 可以直接打开它,而无需用户执行任何操作。

在写入文件之前,如何将我的µ char 转换为其 ASCII 等价物?

标签: java

解决方案


ASCII 只占用字符的低 7 位。所以可能只有 2^7 = 128 个字符。但是,其中只有 95 个实际上是可打印的(读取:可见),并且包括空格字符(因为它仍然具有固定宽度)。不幸的是,您的角色不在该列表中。

到目前为止,最常用的 ASCII 兼容字符编码可能是 UTF-8。但是,这需要两个字节来创建 Mu / 微符号 ( 0xC2 0xB5)。

西方拉丁语,也称为 ISO/IEC 8859-1(自 1987 年起),字符位于 U+00B5 (Alt+0181),以十六进制表示法翻译为 0xB5。然而,西方拉丁语并没有像一个名字那样被使用。相反,使用名为 Windows-1252 的扩展版本,字符位于同一位置。

您可以在此处查看 Unicode 编码,并在此处查看Windows -1252 (在 fileformat.info 站点)。


推荐阅读