【问题标题】:How to convert an UTF String to ANSI and Create an ANSI text file in ExternalSD with JAVA-ANDROID如何将 UTF 字符串转换为 ANSI 并使用 JAVA-ANDROID 在 ExternalSD 中创建 ANSI 文本文件
【发布时间】:2012-06-27 02:09:03
【问题描述】:

我用 java 编写了一个 android 应用程序来获取用户答案并将它们保存在一个文件中。 问题是这个文件保存在 utf-8 中。 最终用户将在 IBM SPSS 中打开这些文件,这是一个只能读取 ANSI (windows-1252) 文件的 windows 应用程序。

如何在 ANSI 代码中创建文件以从 java-android 应用程序保存在 SD 卡中?

我想我知道要将字符串转换为 ANSI 我应该使用:

String unicode = new String(asciiBytes, "windows-1252");

正确吗?

我保存文件的代码是这样的:

File interviewFile = new File(placeOfSDD, fileName);
FileWriter writer = new FileWriter(interviewFile, true);
writer.append(textBody);
writer.flush();
writer.close();

“textBody”是要转成ANSI的String,“interviewFile”也是要保存成ANSI的文件。

感谢您的帮助!

【问题讨论】:

    标签: java android utf-8 cp1252


    【解决方案1】:

    字符串在 JVM 中以 Unicode 表示。写出来的时候,需要转换成合适的字符集。

    为此,请使用OutputStreamWriter 并指定Charset

    OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file, true), 
                                                       "windows-1252");
    writer.append(textBody);
    writer.close();
    

    关于你的第一个问题:

    我想我知道要将字符串转换为 ANSI,我应该使用:
    String unicode = new String(asciiBytes, "windows-1252");
    对吗?

    给定一个表示“windows-1252”字符集中字符的字节数组,此代码将为您构造适当的 Java 字符串(在 JVM 内部表示为 Unicode)。这不是“将字符串转换为 ANSI”......它正在做相反的事情:将 'windows-1252' 转换为 Unicode。

    【讨论】:

    • 有没有一种简单的方法可以指定如何处理 CP1252 中无法表示的字符?
    • @sarnold:如果你想要更多地控制编码过程,你应该使用CharsetEncoder,但我从来没有。
    • 回答很简短,但很犀利!谢谢!!就这样破案了!我使用它是因为我的操作系统是葡萄牙语(巴西)语言。
    猜你喜欢
    • 1970-01-01
    • 2011-08-23
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多