在iOS
中,有一种方法canBeConvertedToStringEncoding
会告诉您是否可以将给定的string
编码为提供的编码/字符集类型(即UTF-8,ISOLatin1等等)。 Android / Java 中是否有任何等效的内置方法?
iOS
还具有fastestEncoding
和smallestEncoding
,它们将返回给定字符串可用的最佳编码类型。 Android有与这些类似的东西吗?
谢谢。
答案 0 :(得分:1)
Java没有这种方法,但是您可以通过尝试编码/解码来检查字符串是否可以用特定的字符编码正确表示。
例如,您可以使自己的string.canBeConvertedToStringEncoding
等价如下:
import java.io.UnsupportedEncodingException;
class Main {
public static void main(String[] args) throws UnsupportedEncodingException {
if (canBeConvertedToStringEncoding("abc", "ISO-8859-1")) {
System.out.println("can be converted");
} else {
System.out.println("cannot be converted");
}
if (canBeConvertedToStringEncoding("あいう", "ISO-8859-1")) {
System.out.println("can be converted");
} else {
System.out.println("cannot be converted");
}
}
public static boolean canBeConvertedToStringEncoding(String target, String encoding) throws UnsupportedEncodingException {
String to = new String(target.getBytes(encoding), encoding);
return target.equals(to);
}
}
答案 1 :(得分:0)
在android转码文本中,如下所示:
byte[] utf8 = new String(string, "ISO-8859-1").getBytes("UTF-8");
请参阅How do I convert between ISO-8859-1 and UTF-8 in Java?
字符集canEncode:
boolean ISO = Charset.forName("ISO-8859-1").newEncoder()
.canEncode(str);
https://developer.android.com/reference/java/nio/charset/Charset.html#canEncode()
答案 2 :(得分:-1)
尝试使用URLEncoder.encode(string, "UTF-8");