如何在 UTF-8 中对 readline() 中的字符串进行编码

How to encode string from readline() in UTF-8

我正在寻找以 UTF-8 编码字符串的有效解决方案。

我是 Android 的新人,请耐心等待。 ;)

我尝试了所有我能找到的解决方案,但没有任何效果!

这是我的代码:

public void Loader(String nameFile) throws FileNotFoundException {

    File file = new File(nameFile);
    FileInputStream f_is = new FileInputStream(file);
    BufferedInputStream b_is = new BufferedInputStream(f_is);
    BufferedReader data = new BufferedReader(new InputStreamReader(b_is));

    try {
        while ( (BufferTemp=data.readLine()) != null) {

            if (BufferTemp.contains("****")) {
                Titolo = data.readLine();
                Tempo = data.readLine();
                Persone = data.readLine();
                Piatto = data.readLine();
                Ingredienti = data.readLine();
                Altro = data.readLine();
                Descrizione = data.readLine();          
                EncodedBkg = data.readLine();
            }       
        }
    } catch (IOException e) {
        e.printStackTrace();
    }           
}

如何将 Descrizione 编码为 UTF-8 字符串?

我接受任何解决方案,欢迎对我的代码进行所有更改,但我需要逐行阅读文件。

java.net.URLEncoder.encode("Descrizione", "UTF-8");

您的输入流 reader 将默认为您设备上设置的默认编码(例如 shift JIS 或 UTF16,具体取决于您的区域设置)

然后重置字符串编码:

Descrizione = Charset.forName("UTF-8").encode(data.readLine());

既然你有一个带有内部 utf8 表示的字符串,如果你希望以需要将其发送到 Web 服务器的方式格式化它,你可以调用:

URLEncoder.encode (myString, "UTF-8");

这将转义许多字符,以便它们可以通过 http GET 或 POST 作为参数发送。

Java 在内存中的原生 String 编码是 UTF-16。 readLine() returns UTF-16 编码 String。使用 UTF-8 编码 String.

没有意义

真正的问题是源文件是 UTF-8 编码的,而您无法从中读取非 ASCII 字符吗?如果是这样,使用 InputStreamReader 构造函数的字符集参数:

new InputStreamReader(b_is, "utf-8")

或者,您真的需要将 UTF-16 编码的 String 转换为 UTF-8 编码的内存缓冲区吗?

ByteBuffer Descrizione_utf8 = Charset.forName("utf-8").encode(Descrizione);