hi, all
I found a strange charset encoding bug of dalvik VM. please see the
following code:
public class CharsetMain extends Activity {
private final static String LOG_TAG = "zzw";
final String s123="1我2"; // at least one none-ascii
final String sabc="abcdef";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(LOG_TAG, sabc); // ok
// set charset input to sabc
sabc.getBytes();
// fill charset input with s123
Charset charset = java.nio.charset.Charset.forName("UTF-8");
charset.encode(s123);
Log.d(LOG_TAG, sabc); // bad
Log.d(LOG_TAG, "abcdef"); // bad
finish();
}
}
stirng s123 contains a Chinese character, after run, string sabc will
be filled with s123, the last 2 log will give bad result.
I found the error is at com.ibm.icu4jni.charset.CharsetEncoderICU,
method getArray (line 314), here it directly save the internal buffer
of a input string or copy input string to its saved buffer, if 2
consequent calls are just the 2 conditions, the later will copy the
string to the first saved buffer.
I am not sure it's a bug, but it causes the Email program runs
abnormally with Chinese local.
your comments are greatly appreciated, thanks!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---