ubipo / osmfocus

Open source tool for examining OpenStreetMap elements by moving around on a map.
Apache License 2.0
43 stars 5 forks source link

IllegalCharsetNameException: java.nio.charset.CharsetICU[UTF-8] #30

Closed ubipo closed 2 years ago

ubipo commented 2 years ago

As reported via email. User used a hanzi character set.

Stacktrace:

java.nio.charset.IllegalCharsetNameException: java.nio.charset.CharsetICU[UTF-8]
    at java.nio.charset.Charset.checkCharsetName(Charset.java:201)
    at java.nio.charset.Charset.forName(Charset.java:295)
    at java.net.URLEncoder.encode(URLEncoder.java:57)
    at net.pfiers.osmfocus.view.fragments.ElementDetailsFragment$onCreateView$tagsListAdapter$1$1.invokeSuspend(ElementDetailsFragment.kt:28)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:3)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:18)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:10)
ubipo commented 2 years ago

Fix is to use Charset.name() instead of Charset.toString().

See also: https://github.com/influxdata/influxdb-java/issues/272.

Charset.toString() has this output (java.nio.charset.CharsetICU[<canonicalName>]) in: Android 6.3 (SDK 18): https://android.googlesource.com/platform/libcore/+/android-4.3_r3/luni/src/main/java/java/nio/charset/Charset.java#554 Android 6.0.1 (SDK 23): https://android.googlesource.com/platform/libcore/+/refs/tags/android-6.0.1_r63/luni/src/main/java/java/nio/charset/Charset.java#545

Output changes to just <name> starting from: Android 7.1.2 (SDK 25): https://android.googlesource.com/platform/libcore/+/refs/tags/android-7.1.2_r39/ojluni/src/main/java/java/nio/charset/Charset.java#961