我不知道你問什麼,但我會假設你問如何某些字符轉換從Unicode爲8位字符集。 (例如,ISO-8859-1是「西歐」語言的字符集,如英語)。
我不知道有任何方法可以自動檢測相關的8位字符集,所以我查了一下你的一個字符(在這裏http://unicode.org/charts/),我可以看到這些字符是孟加拉語。
我認爲孟加拉語相當於8位字符集稱爲x-iscii-be
。 我沒有安裝在我的系統上,所以我無法成功完成轉換。
編輯:Java不支持字符集x-iscii-be
,但我將留下此答案的其餘部分用於說明目的。請參閱http://download.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html以獲取支持的字符集列表。編輯2:Android當然不保證支持這個字符集(它保證是唯一的8位字符集是ISO-8859-1)。參見:http://developer.android.com/reference/java/nio/charset/Charset.html。
* 所以,我認爲你應該在孟加拉的Android設備上運行一些Charset檢測代碼 - 也許它支持這個字符集。你需要的一切都在我的代碼示例中。 *
爲了讓Java以不同的字符集轉換您的數據,您需要在Java中執行的所有操作都是檢查是否安裝了所需的Charset,然後在將字符串轉換爲字節時指定所需的字符集。
轉換本身是非常簡單的:
str.getBytes("x-iscii-be");
所以,你看,字符串本身存儲在一種「規範化」形式(即defaultCharset),並且可以治療的getBytes( charsetName)作爲字符串的'替代輸出格式'。 對不起 - 可憐的解釋!
在你的情況,或許你只需要一個字符集分配到resultView,而框架將工作它的魔力爲你...
下面是一些測試代碼,我放在一起,以說明這一點,和檢查系統上是否支持給定的字符集。
我有這個代碼來輸出字節數組作爲'十六進制'字符串,以便您可以看到轉換後的數據是不同的。
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.nio.charset.Charset;
import java.util.Map.Entry;
import java.util.SortedMap;
public class UnicodeTest {
public static void main(String[] args) throws UnsupportedEncodingException {
testWestern();
testBengali();
}
public static void testWestern() throws UnsupportedEncodingException {
String unicodeStr= "\u00c2"; //This is a capital A with an accent.;
String charsetName= "ISO-8859-1";
System.out.println("Input (outputted as default charset - normally unicode): "+unicodeStr);
attempt8bitCharsetConversion(unicodeStr, charsetName);
}
public static void testBengali() throws UnsupportedEncodingException {
String unicodeStr = "\u0986\u09AE\u09BF \u0995\u09BF\u0982\u09AC\u09A6\u09A8\u09CD\u09A4\u09BF\u09B0 \u0995\u09A5\u09BE \u09AC\u09B2\u099B\u09BF";
String charsetName= "x-iscii-be";
System.out.println(unicodeStr);
attempt8bitCharsetConversion(unicodeStr, charsetName);
}
public static void attempt8bitCharsetConversion(String input, String charsetName) throws UnsupportedEncodingException {
SortedMap<String, Charset> availableCharsets = Charset
.availableCharsets();
for (Entry<String, Charset> entry : availableCharsets.entrySet()) {
if (charsetName.equalsIgnoreCase(entry.getKey())) {
System.out.println("HEXED input : "+ toHex(input.getBytes(Charset.defaultCharset().name())));
System.out.println("HEXED output: "+ toHex(input.getBytes(entry.getKey())));
}
}
throw new UnsupportedEncodingException(charsetName+ " is not supported on this system");
}
public static String toHex(byte[] input) throws UnsupportedEncodingException {
return String.format("%x", new BigInteger(input));
}
}
也看到這裏的更多信息,字符集轉換:http://download.oracle.com/javase/tutorial/i18n/text/string.html
Charactersets是一個棘手的業務,所以請原諒我費解的答案。
HTH
缺少typeFace和resultView的定義 –
ya ...我有他們的定義在類 –
的頂部,但什麼是resultView?什麼是typeFace? Android是Java嗎? –