android - java.io.UnsupportedEncodingException : java. nio.charset.CharsetICU[UTF-8]

标签 android apache-commons

安卓工作室 3.6

在 build.gradle 中:

compileOptions {
        targetCompatibility JavaVersion.VERSION_1_8
        sourceCompatibility JavaVersion.VERSION_1_8
    }

api 'org.apache.commons:commons-io:1.3.2'

在我的代码中

import org.apache.commons.io.FileUtils
import java.io.*
import java.nio.charset.StandardCharsets

     val file = File(folderPath + File.separator + resultFileName)
                FileUtils.writeStringToFile(
                    file,
                    fileContents,
                    StandardCharsets.UTF_8.toString()
                )

但我得到错误:

 java.nio.charset.CharsetICU[UTF-8]
 java.io.UnsupportedEncodingException: java.nio.charset.CharsetICU[UTF-8]
    at java.nio.charset.Charset.forNameUEE(Charset.java:322)
    at java.lang.String.getBytes(String.java:534)
    at org.apache.commons.io.IOUtils.write(IOUtils.java:810)
    at org.apache.commons.io.FileUtils.writeStringToFile(FileUtils.java:1110)
    at com.myproject.client.common.util.AndroidFileUtil.saveTextToFile(AndroidFileUtil.kt:106)
    at com.myproject.client.service.RecognizedCheckDataService$Companion.saveRecognizedText(RecognizedCheckDataService.kt:117)
    at com.myproject.client.viewmodel.ScanCheckRompetrolViewModel.finishProcessRecognizedCheck(ScanCheckRompetrolViewModel.kt:1059)
    at com.myproject.client.viewmodel.ScanCheckRompetrolViewModel.access$finishProcessRecognizedCheck(ScanCheckRompetrolViewModel.kt:28)
    at com.myproject.client.viewmodel.ScanCheckRompetrolViewModel$runDetector$1.onSuccess(ScanCheckRompetrolViewModel.kt:193)
    at com.myproject.client.viewmodel.ScanCheckRompetrolViewModel$runDetector$1.onSuccess(ScanCheckRompetrolViewModel.kt:28)
    at com.google.android.gms.tasks.zzn.run(Unknown Source)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
 Caused by: java.nio.charset.IllegalCharsetNameException: java.nio.charset.CharsetICU[UTF-8]

最佳答案

Charset#toString() 未指定;在 Android 上,它返回找到的 "java.nio.charset.CharsetICU[UTF-8]" here .该字符串当然不是现有字符集的名称。

但是根本不需要 toString() 调用。 writeStringToFile 方法有一个 overload直接接受 Charset

关于android - java.io.UnsupportedEncodingException : java. nio.charset.CharsetICU[UTF-8],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59988570/

相关文章:

java - 横向模式下的Android多 fragment 布局

java - 使用 Apache CSVParser 时如何去掉 header 中的额外引号

android - 如果正在运行的 Activity 关闭, Activity HTTP 调用会发生什么情况?

android - Jquery 移动中的多个选择小部件在 Android 2.3 中不起作用

android - Fabric SDK 报告的 Cordova App 中的 NullPointerException

java - 使用 Commons IO 写入文件中的新行?

java - PropertyUtils 性能

java - 如何选择范围内的随机数,但加权到该范围的一部分? ( java 语)

android - ImageView 不能在 RelativeLayout 中居中

android - 无法使用 ADT v14 调试库项目 - 找不到源