我有一个已经在JavaSE上工作的自定义字符集.
我的CharsetProvider的类在一个文件java.nio.charset.spi.CharsetProvider中指定,该文件位于META-INF/services并且所有内容都正常加载并按预期工作.
但是现在我也在android上使用lib,但是在Android-App中没有加载charset.
如何集成我的charset,以便在Android-App中使用它?
Charset.forName("MyCS");
Run Code Online (Sandbox Code Playgroud)
目前我正在做一个像这样的解决方法:
public static String decode(String encoding, byte[] buffer, int offset, int length) {
String result = "";
try {
result = new String(buffer, offset, length, encoding);
} catch (UnsupportedEncodingException ex) {
MyCharsetProvider provider = new MyCharsetProvider();
Charset cs = provider.charsetForName(encoding);
if (cs == null) {
Logger.getLogger(Converters.class.getName()).log(
Level.SEVERE,null,ex);
result = new String(buffer, offset, length);
} else {
result = cs.decode(ByteBuffer.wrap(buffer, offset, length)).toString();
}
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
哪个有效,但对我来说似乎无效,因为每次我尝试使用自己的字符集进行解码时,都会抛出异常并创建一个CharsetProvider-Object.
单一模式可以减少课程的创建.但问题是避免完全直接使用MyCharsetProvider.
编辑:
由于META-INF/services/java.nio.charset.spi.CharsetProvider …