java - Android UTF-8 编码不起作用?

标签 java android encoding utf-8 windows-1252

我现在正在处理 CSV 文件。 在我的程序中,我使用 OutputStreamWriter 将数据写入 csv 文件。

OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut, Charset.forName("UTF-8").newEncoder());

我尝试打印出该作者的编码风格并得到以下结果:

Log.i(TAG, "BODY ENCODING: " + myOutWriter.getEncoding());
Logcat: BODY ENCODING: UTF-8

但是当我尝试在桌面上打开 csv 文件时,它说该文件位于 windows-1252 中,因此我无法读取我需要的 æøå 字符。

我在这里遗漏了一些明显的东西还是我不理解outputStreamWriter的概念?我尝试了不同类型的编码,但似乎不起作用:)

当我尝试在 Excel 中打开时: FilOprindelse = File Origin

最佳答案

您的文件实际上是 UTF-8 而不是 CP-1252。您的文本编辑器/查看器将其检测为 CP-1251(因为没有多字节字符)。您可以通过在文件开头添加字节顺序标记 (BOM) 来帮助编辑。即

static final byte[] UTF8_BOM = {0xEF,0xBB,0xBF};
...
fOut.write(UTF8_BOM);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut, Charset.forName("UTF-8").newEncoder());

关于java - Android UTF-8 编码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49520409/

相关文章:

ffmpeg的iphone编码问题

python - Django 使用 ANSI_X3.4-1968 编码而不是 UTF-8

java - 当从不同的存储库下载 2 个相同的 jar 时,Maven 如何选择使用哪个 .jar

java - 如何在 java 中创建一个复杂的 json 对象?

java - 创建 TomCat 6.0 Web 应用程序

android - 无法访问文件 :///android_asset 中的文件

Java:使用 HashMap ,检索所有值和调用方法

java - Android 中的 Tabs+Swipe 适用于所有 API 级别

java - Android 侧边栏,如 facebook 或 firefox

javascript - 用Java对Http请求进行编码和解码