java - 在写入文件之前用等效的 ASCII 替换特殊字符
问题描述
我在尝试编写包含 char µ的 csv 时收到 java.nio.charset.UnmappableCharacterException 。
我需要使用 ASCII 编码编写文件,以便 Excel 可以直接打开它,而无需用户执行任何操作。
在写入文件之前,如何将我的µ char 转换为其 ASCII 等价物?
解决方案
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 站点)。
推荐阅读
- reactjs - 如何在不重复安装和卸载的情况下实现 useEffect?
- php - 为什么抛出异常“未定义的变量”?
- mysql - Google Cloud SQL 的 API 基本网址
- limit - 您可以对 promQL 查询应用限制吗?
- oracle - Oracle apex 更改默认列首选项/设置
- python - Python3 输入和 mypy 的意外可选行为
- prometheus - 使用外部普罗米修斯的 Zeebe 指标监控
- python - Django-将 DateField 模型条目更新为默认字符串
- .net - .NET 5 Blazor 服务器 ServiceStack 模板
- angular - mat-datepicker 反应式表单在表单重置时设置默认值